stream_context_create中的超时何时不起作用?

时间:2014-10-04 23:49:29

标签: php

我试图从其他网站提取少量数据,但我发现它已超时。我已经设置了一些编码条款来尝试强制我的代码从类似数据中获取数据,如果从第一次获取它需要太长时间。

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

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

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

替换$ ctx
ini_set('default_socket_timeout', 2);

但这也不起作用。任何人都可以建议一些我可以试试的东西吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

还有另一种设置超时的方法..

这将是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