php用file_get_contents($url)爬某一网页源代码过大超时怎么办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php用file_get_contents($url)爬某一网页源代码过大超时怎么办相关的知识,希望对你有一定的参考价值。
用file_get_contents($url)爬某一网页源代码,但是可能文件过大造成超时,如果我只需要爬到前面的一小部分代码,怎么才能只让php爬下来一部分源码呢?
源代码从<span id="shipping" class="availability">到<span class="freeshipping">之间的内容,请给出具体代码,谢谢
file_get_contents($url,“<span id=\"shipping\" class=\"availability\">”,length(这里估一个长度值)) 参考技术A 你可以把超时的时间设置的长点。
PHP file_get_contents 函数超时的几种解决方法
参考技术A 这里就简单介绍两种:一、增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。
我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改file_get_contents延时可以用resource
$context的timeout参数:
复制代码
代码如下:
$opts
=
array(
‘http'=>array(
‘method'=>”GET”,
‘timeout'=>60,
)
);
$context
=
stream_context_create($opts);
$html
=file_get_contents('http://www.example.com',
false,
$context);
fpassthru($fp);
二、一次有延时的话那就多试几次
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回
FALSE,所以可以下面这样编写代码:
复制代码
代码如下:
$cnt=0;
while($cnt
<
3
&&
($str=@file_get_contents('http…'))===FALSE)
$cnt++;
以上是关于php用file_get_contents($url)爬某一网页源代码过大超时怎么办的主要内容,如果未能解决你的问题,请参考以下文章
php file_get_contents函数分段读取大记事本或其它文本文件