解決策を求めてstackoverflowを検索していましたが、私が達成しようとしているものに近いものを見つけることができませんでした。おそらく私は、誰もがこの問題に取り組んでいる魔法のPHPソースに幸いにも気づいていません...;)
基本的に、リモートサーバー上のさまざまなXMLファイルを指す数百のURLを指定または取得する配列があります。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倍に短縮しますが、これを最善かつ最もパフォーマンスの高い方法で行う方法を考えることはできません。続行する方法に関するヘルプやポインタはありますか?