如何中断花费太长时间的PHP函数?

用户3397543

如果要花费太长时间加载和/或无法访问(有时带有xml的站点关闭),我想停止simplexml_load_file,这是因为我不希望自己的站点不启动时完全滞后。

我尝试自己做点实验,但没有成功。

提前非常感谢您的帮助!

阿马尔·穆拉利(Amal Murali)

在指定的时间后不能退出任意函数。相反,您可以尝试首先加载URL的内容-如果成功,则继续处理脚本的其余部分。

有几种方法可以实现此目的。最简单的方法是file_get_contents()与流上下文集一起使用

$context = stream_context_create(array('http' => array('timeout' => 5)));

$xmlStr = file_get_contents($url, FALSE, $context);
$xmlObj = simplexml_load_string($xmlStr);

或者,您可以simplexml_load_file()通过libxml_set_streams_context()函数使用流上下文

$context = stream_context_create(array('http' => array('timeout' => 5)));

libxml_set_streams_context($context);
$xmlObj = simplexml_load_file($url);

您可以将其包装为一个不错的小功能:

function simplexml_load_file_from_url($url, $timeout = 5)
{
    $context = stream_context_create(
        array('http' => array('timeout' => (int) $timeout))
    );
    $data = file_get_contents($url, FALSE, $context);

    if(!$data) {
        trigger_error("Couldn't get data from: '$url'", E_USER_NOTICE);
        return FALSE;
    }

    return simplexml_load_string($data);
} 

另外,您可以考虑使用cURL(默认情况下可用)。使用cURL的好处是您可以对请求以及如何处理响应进行非常精细的控制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NSURLConnection花费太长时间

来自分类Dev

万一花费太长时间,如何取消OdbcConnection.Open()?

来自分类Dev

getFrameBufferPixels在libgdx中花费太长时间

来自分类Dev

MySQL jdbc连接花费太长时间

来自分类Dev

iOS UIWebView loadRequest花费太长时间

来自分类Dev

phpexcel脚本花费太长时间

来自分类Dev

iOS UIWebView loadRequest花费太长时间

来自分类Dev

超时功能,如果花费太长时间

来自分类Dev

connect()函数花费的时间太长

来自分类Dev

如何在R中停止花费太长时间的功能并为其提供替代选择?

来自分类Dev

如果函数花费的时间太长,则跳过循环?

来自分类Dev

如果花费太长时间取消解析请求

来自分类Dev

为什么套接字BeginSend将花费太长时间

来自分类Dev

Listview花费太长时间来更新C#

来自分类Dev

如果方法花费太长时间完成,则超时

来自分类Dev

LINQ DBcontext花费太长时间来加载数据

来自分类Dev

使用子查询花费太长时间的sort_by

来自分类Dev

sql最后记录的行花费太长时间查询

来自分类Dev

数独在序言上花费太长时间解决

来自分类Dev

Listview花费太长时间来更新C#

来自分类Dev

LINQ DBcontext花费太长时间来加载数据

来自分类Dev

如果花费太长时间,则监视进程并回显

来自分类Dev

为什么Android Studio构建过程花费太长时间

来自分类Dev

识别网站是否花费太长时间进行响应

来自分类Dev

MATLAB:花费太长时间强制一个函数返回一个解决方案

来自分类Dev

熊猫将函数按行应用花费太长时间是否有以下代码的替代方案

来自分类Dev

for循环花费的时间太长

来自分类Dev

prop()花费的时间太长

来自分类Dev

mkfs花费的时间太长

Related 相关文章

热门标签

归档