XMLフィードを提供するリソースのリストがあります。私はそれらをループし、それに応じてデータベースを更新する必要があります。複数のURLを同時にロードする
URLが100個あるとします。私は同時にそれらからXMLを取り出す必要があります。その後、しばらくしてから、すべてのXMLフィードの解析が完了し、「最後に更新された時間」を更新するためにこの瞬間を把握する必要があります。
XMLを解析する目的でsimplexml_load_url
を使用します。
最も重要なのは時間の問題ですが、XMLを1つずつ取得しようとしましたが、20個のURLに対して約50秒かかりました。
どうすればこの問題を解決できますか? URLの数は約300〜500である可能性があります。
おかげ
ループ(?)の先頭に配列を作成し、行ごとに一意の識別子をキャッシュするのはなぜでしょうか。その後、すべてのパーズが完了したら 'UPDATE table SET lastModfied = 'some_datetime' WHERE unique_identifier IN(list、of、identifiers); ' – GentlemanMax
LastModifiedはすべての300-500のURLが更新された後の時刻でなければなりません。それは各URLの時間ではなく、 "ねえ、300 URLは15:03に更新されました"。最も重要なのは、同時にデータをフェッチする方法です。一種のパラレルにします。 – Victor
私の提案がそうするでしょう。 'PHP'は非同期タスクをサポートしていないので、実際にすべてのファイルを同時に解析することは、別々の要求として各解析オペレーションを何らかの方法で起動しなければ何もできません。 – GentlemanMax