2014-10-04 58 views
0

我试图从另一个网站提取少量数据,但我发现它是超时。我已经设置了一些编码条款来尝试强制我的代码从类似数据中获取数据,如果试图从第一个中获取数据需要很长时间。stream_context_create中的超时何时不起作用?

$ctx = stream_context_create(array('http' => array('timeout' => 2))); 

$geo = json_decode(file_get_contents($url, 0, $ctx), true); 

原则上这应该在2秒后超时,然后我会知道它的duff并去第二个URL。但它不起作用,并试图获得它15秒。我试过用$

ini_set('default_socket_timeout', 2); 

但是这也行不通。任何人都可以请建议别的东西,我可以尝试?

+0

您使用的是什么版本的PHP?由于超时仅在版本5.2.1中增加了http://php.net/manual/en/context.http.php#refsect1-context.http-changelog – 2014-10-05 00:06:50

+0

版本是5.4.33 – user2757062 2014-10-05 01:44:48

回答

0

还有另一种方法,你可以设置超时..

这将是与stream_context_create()

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

echo file_get_contents('the link', false, $ctx); 

看一看here

0

在我的情况下,当URL以https超时不工作就开始了。但是当我从https的结尾删除了它的工作。如果你可以允许你的脚本使用非安全协议,你的问题就解决了。