file_get_content()是否有超时设置?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我在file_get_contents()循环中使用该方法调用一系列链接。每个链接可能需要超过15分钟才能处理。现在,我担心PHP是否file_get_contents()有超时期限?

如果是,它将通过电话超时并转到下一个链接。我不想在没有事先完成的情况下拨打下一个链接。

所以,请告诉我是否file_get_contents()有超时时间。包含该文件的文件file_get_contents()设置set_time_limit()为零(无限制)。

提问于
用户回答回答于

可以随时使用curl超时。

所以这里有一个适用于调用链接的工作代码。

$url='http://example.com/';
$ch=curl_init();
$timeout=5;

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$result=curl_exec($ch);
curl_close($ch);
echo $result;
用户回答回答于

缺省超时由default_socket_timeoutini-setting定义,即60秒。你也可以即时更改它:

ini_set('default_socket_timeout', 900); // 900 Seconds = 15 Minutes

另一种设置超时的方法是用来将超时stream_context_create设置为正在使用的HTTP流包装的HTTP上下文选项

$ctx = stream_context_create(array('http'=>
    array(
        'timeout' => 1200,  //1200 Seconds is 20 Minutes
    )
));

echo file_get_contents('http://example.com/', false, $ctx);

扫码关注云+社区