正在寻找stackoverflow的解决方案,但找不到任何接近我想要实现的东西。也许我只是幸福地没有意识到每个人都在解决这个问题的一些神奇的 PHP 酱...... ;)
基本上我有一个数组,包含几百个 URL,指向远程服务器上的不同 XML 文件。我正在做一些神奇的文件检查以查看 XML 文件的内容是否已更改,如果更改了,我会将更新的 XML 下载到我的服务器。
PHP代码:
$urls = array(
'http://stackoverflow.com/a-really-nice-file.xml',
'http://stackoverflow.com/another-cool-file2.xml'
);
foreach($urls as $url){
set_time_limit(0);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, false);
$contents = curl_exec($ch);
curl_close($ch);
file_put_contents($filename, $contents);
}
现在, $filename 设置在其他地方,并根据我的逻辑为每个 xml 提供它自己的 ID。到目前为止,该脚本运行良好,并且运行正常,但运行速度非常慢。我知道我的服务器可以处理更多,我怀疑我的 foreach 正在减慢这个过程。
有什么办法可以加快 foreach 的速度吗?目前我正在考虑将每个 foreach 循环中的 file_put_contents 提高到 10 或 20,基本上将我的执行时间缩短了 10 或 20 倍,但想不出如何以最佳和最高性能的方式来解决这个问题。有关如何进行的任何帮助或指示?