我有一个脚本循环遍历许多基于URL的XML文件来比较值。目前有超过50个单独的XML文件,但这个数字将增加到数百个。比较值很简单,并从字符串中检索。
XML文件结构合理,体积小,10-26KB,我只从基于网址的API中获取1-2个值。
例如:
foreach(); //loop starts, left out details
$value1 = "some_number";
//load all the xml
$request_url = "example.com/file.xml";
$request_url = urlencode($request_url);
$response_xml = @simplexml_load_file($request_url);
$res = $response_xml;
$version = $res->version;
if ($value1 > $version)
echo "yay";
endforeach; //end loop
现在问题是,当bean获得更多20个请求时,这变得很慢,我想象有几百个它慢慢爬行。
有更好的方法或更快的方法吗?
答案 0 :(得分:1)
由于获取远程文件是迭代中最慢的部分,因此它是第一个开始提高性能的地方。我将使用cURL来获取一个交换中的所有文件,并在远程会话完成后处理数据。 cURL提供了curl_multi_exec。 php.net/manual/en/function.curl-multi-exec.php,你可以提供多个卷曲句柄。如果可能,这将重新使用您的连接,您可以同时运行请求。