contents函数致使CPU利用率100%

有时候,运行 Nginx、PHP-CGI(php-fpm) Web处事的 Linux 处事器,溘然系统负载上升,利用 top 呼吁查察,许多 php-cgi 历程 CPU 利用率靠近100%。厥后,我通过跟踪发明,这类环境的呈现,跟 PHP 的 file_get_contents() 函数有着密切的干系。

  大、中型网站中,基于 HTTP 协议的 API 接口挪用,是屡见不鲜。PHP 措施员们喜欢利用简朴便捷的 file_get_contents("http://example.com/") 函数,来获取一个 URL 的返回内容,可是,假如 这个网站响应迟钝,file_get_contents() 就会一直卡在那儿,不会超时。

以上内容是出自 张宴的博客
这个收罗上是很有影响的,我也习惯了利用file_get_contents() ,此刻知道了,应该怎么利用了原文也给出的办理要领:

要做到彻底办理,只能让 PHP 措施员们改掉直接利用 file_get_contents("http://example.com/") 的习惯,而是稍微修改一下,加个超时时间,用以下方法来实现 HTTP GET 请求。要是以为贫苦,可以自行将以下代码封装成一个函数。

<?php $ctx = stream_context_create(array(    'http' => array(        'timeout' => 1 //配置一个超时时间,单元为秒        )    ) ); file_get_contents("http://example.com/", 0, $ctx); ?>


 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7837.html