首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOMDocument::load()超时

DOMDocument::load()超时
EN

Stack Overflow用户
提问于 2014-02-01 19:41:09
回答 2查看 1.5K关注 0票数 1

我正在使用DOMDocument::load()从URL加载一个XML文件:

代码语言:javascript
复制
$doc = new DOMDocument();
$doc->load("http://url_of_some_xml_file");

如果URL加载时间超过X秒,是否有办法在定义的超时后中断或停止加载?

如果使用DOMDocument::load()不能做到这一点,有没有其他方法可以设置从URL加载XML的超时时间?

EN

回答 2

Stack Overflow用户

发布于 2014-02-01 19:54:28

您可以使用libxml_set_streams_context来配置行为。HTTP stream wrapper选项包括timeout

代码语言:javascript
复制
$options = [
  'http' => [
    'method' => 'GET',
    'timeout' => '5'
  ]
];
$context = stream_context_create($options);
libxml_set_streams_context($context);

$doc = new DOMDocument();
$doc->load("http://url_of_some_xml_file");
票数 3
EN

Stack Overflow用户

发布于 2015-09-02 23:40:26

除了@thw通过创建一个新的steam上下文来设置超时选项的excellent answer之外,我发现默认的流上下文使用default_socket_timeoutphp.ini设置作为它的超时。

像这样更改您的php.ini

代码语言:javascript
复制
; Increase from the default of 60 seconds
default_socket_timeout = 120

虽然这也会影响使用套接字的其他流上下文,但这是增加超时时间而无需修改应用程序代码的一种简单方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21497561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档