【问题标题】:Using CURL output with php XML functions to process large data feeds使用带有 php XML 函数的 CURL 输出来处理大型数据馈送
【发布时间】:2013-03-20 17:51:49
【问题描述】:

我有一个受密码保护的提要。以下是用于访问提要的代码

$url = 'http://thefeedwebsite.com/feed.php';

$data = array("username" => ‘user’, "password" => ‘password’, "location" => "HK")
$ch = curl_init($url);

);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);


$output = curl_exec($ch);

curl_close($ch);

问题是由于输出大约 100 个结果后的大小很大,它一直处于超时状态。正如一些线程建议的那样,我已经在我的 php.ini 中设置了时间限制,但仍然是同样的问题。我认为这是因为 CURL 将完整的提要加载到内存中。

是否可以将$output 直接加载到 php 中的XMLReader() 以便我可以更快地通过阅读器处理提要?

对不起,这个问题完全是菜鸟。刚开始用xml学习php

【问题讨论】:

    标签: php xml xmlreader


    【解决方案1】:

    这个帖子可以帮助你(流式 cURL 和玩内存):

    Manipulate a string that is 30 million characters long

    第一个答案将其存储在文件中。第二个是流数据“随着它们流动”。如果文件真的很大,您应该考虑要使用的 XML 解析器。有些将整个 xml 加载到内存中并创建一个对象,但其他人可以只提供您可以在运行中使用 XML 的接口方法(无需将整个 XML 加载到内存中)。

    【讨论】:

      【解决方案2】:

      如果时间限制 (http://php.net/manual/en/function.set-time-limit.php) 不是您的问题,您是否考虑过内存不足?

      http://www.php.net/manual/en/ini.core.php#ini.memory-limit

      【讨论】:

        猜你喜欢
        • 2016-05-13
        • 1970-01-01
        • 2014-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-09
        相关资源
        最近更新 更多