PHP-file_get_contents 函数会使服务器的负载很高,有什么好的办法解决?

PHP-file_get_contents 函数会使服务器的负载很高,有什么好的办法解决?

瑾兮 发布于 2016-12-14 字数 200 浏览 998 回复 4

原来改版discuzx2版的论坛程序,运行一段时间后,数据量越来越大之后,经常出现502错误,通过top命令查看,很多php-cgi进程cpu使用率是100%,通过跟踪发现是file_get_Contents函数问题,有什么办法可以解决?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

虐人心 2017-07-28 4 楼

设置一个超时时间,

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

具体的解决方案见
PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系

其实curl函数如果不设置超时时间的话,也会出现一样的问题

清晨说ぺ晚安 2017-04-12 3 楼

这个和网络有一定的关系。但电信联通之间通信有这种情况。建议改用curl方法,可选参数比较多。设置好了比file_get_contents效率高多了

想挽留 2017-03-19 2 楼

尽量避免使用 file_get_contents

偏爱自由 2017-01-31 1 楼

不要再使用file_get_contents了,我之前跑脚本就用了它,后来发现很多进程都卡住了,因为默认是没有超时选项的,而且还是建议使用curl,curl的性能也比他高