1

私は垂直検索エンジンを開発しています。ユーザーがアイテムを検索すると、当サイトはさまざまな市場からの多数のフィードをロードします。残念ながら、フィードのコンテンツの読み込み、解析、順序付けには長い時間がかかり、ユーザーには多少の遅延が発生します。フィードの内容は絶えず変化しているため、これらのフィードをデータベースに保存したり、キャッシュしたりすることはできません。

PHPで複数のフィードを同時に処理する方法はありますか?popenを使用する必要がありますか、それともより優れたphp並列処理方法がありますか?

ありがとう!

ラス

4

3 に答える 3

1

curlを使用してフィードをフェッチしている場合は、curl_multi_exec複数のHTTPリクエストを並行して実行できる関数を確認できます。
(与えられた例はここにコピーするには長すぎます。)

これにより、少なくともフィードの取得に費やす時間を減らすことができます...


サーバーがHTTPリクエストの終了を待っている間はほとんど何もしていないことを考えると、それらを並列化しても害はないと思います。
一方、これらのフィードの並列解析は、CPUを集中的に使用する操作である場合(XML解析などの場合)、多少の損害を与える可能性があります。


補足として:このデータの一部をキャッシュすることは本当に不可能ですか?ほんの数分ならイベント?
たとえば、cronジョブを使用して最も頻繁に使用されるデータをフェッチし、それをキャッシュに保存すると、非常に役立つ場合があります...

そして、2番目の結果で実際に最新のものよりも、ユーザーにとって高速に応答するWebサイトの方が重要だと思います...サイトが応答しない場合、ユーザーは別の場所に移動します。

于 2009-08-01T23:39:17.377 に答える
0

JavaScriptを介してサーバーに対して複数の同時リクエストを実行する結果ページを設定する必要があります。これは単純なAJAXリクエストで実現でき、ロードが完了したら、返されたデータをDOMに挿入できます。現在、PHPはスレッド化をサポートしていません。現時点では、リクエストの並列化が唯一の解決策です。

jQueryを使用してWebサイトからリモートデータをロードし、それをDOMに挿入する例を次に示します。http: //docs.jquery.com/Ajax/load#urldatacallback

于 2009-08-05T19:42:46.213 に答える
0

私は同意します、人々は遅い応答時間を許すよりもはるかに早くキャッ​​シングを許します。数分ごとに再キャッシュするだけです。

于 2009-08-02T00:08:18.520 に答える