如何解决file_get_contents()函数运行时间过长的问题? - 技术问答
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决file_get_contents()函数运行时间过长的问题? - 技术问答相关的知识,希望对你有一定的参考价值。
最近做一个采集,用file_get_contents()函数获取对方网页内容,但是遇到某些网站打不开或者服务器相应超时,但是file_get_contents()函数会一直运行,导致整个程序运行时间过长,能不能进行一些处理,当对方服务器20秒没有反应就跳过file_get_contents()函数直接运行下面的语句???
file_get_contents() 很方便,但是没有任何控制能力,效率也比使用 fopen/fread 要慢一些。你可以用 Streams 函数来实现读取采集数据,控制连接时间等。比如:[php]$handle = @fopen(\" http://www.163.com\", \"r\");if (!$handle) ? ? die(\'Unable to open\');// 200 毫秒stream_set_timeout($handle, 0, 200);// 采集的内容$content = stream_get_contents($handle);$info = stream_get_meta_data($handle);fclose($handle);if ($info[\'timed_out\']) ? ? print \'time out\';? ? // others else ? ? // ..../* vim: set expandtab tabstop=4 shiftwidth=4: */[/php]fopen 在我的机器上面有点问题,开远程URL连接总是失败,似乎是 xdebug 的原因,你也可以试试 fsockopen 来打开连接。 参考技术A 7# 没有了时间控制啊,还是会一直执行的啊…… 参考技术B 10# settimeout不是代码运行的延迟时间么????? 参考技术C 3# 要是php能够采集朝时的网站的话,估计浏览器就应该用php编写了。。。。从来没指望能够打开超时的网站,只是想别让整个采集卡死在一个网站上。。。。以上是关于如何解决file_get_contents()函数运行时间过长的问题? - 技术问答的主要内容,如果未能解决你的问题,请参考以下文章
php file_get_contents($url)获取的时候非常慢有没有方法解决,时间可以控制在3s以内的即可
如何接收由 file_get_contents() 函数发送的值?
如何解决此警告:file_get_contents(): Unable to find the wrapper "public"?
如何使用 CURL 而不是 file_get_contents?
如何解决错误“[ErrorException] file_get_contents(/var/www/laravel/.env): failed to open stream: No such fil