3

外部ソースから大量のデータを受信する必要があります。問題は、外部ソースがデータを送信するのが非常に遅いことです。ワークフローは次のようになります。

  1. ユーザーはアプリのインターフェースから何らかのプロセスを開始します(通常はローカルのxmlファイルからデータをフェッチします)。これは非常に高速なプロセスです。
  2. その後、外部ソースからフェッチされたデータに関連する情報をロードする必要があります(基本的にはxmlからのデータの外部統計です)。そして、それは非常に遅いです。ただし、ユーザーが作業を続行するには、この追加情報が必要です。たとえば、彼は外部データまたは他の何かに従ってフィルタリングを実行する場合があります。

したがって、非同期で実行する必要があります。主なアイデアは、外部データが利用可能になったときにそれを表示することです。問題は、この非同期プロセスをどのように編成できるかということです。多分いくつかの質問か何か他のもの?バックエンドとしてphp+mysqlを使用し、フロントエンドでjqueryを使用しています。どうもありがとう!

4

2 に答える 2

1

考えられる2つの戦略は次のとおりです。

  1. 大きな外部リソースをデータベースまたはmemcacheにカールさせ、そのdb行またはキャッシュを応答にフラッシュすることで新しいデータの期間要求に応答するPHPスクリプトを使用して、バックエンドでストリーミングを実行します。

  2. この回答で説明されているクロスブラウザJavaScript手法を使用して、フロントエンドでストリーミングを実行します。GeckoとWebKitでは、XmlHttpRequest.onreadystatechange新しいデータを受信するたびにイベントが発生するため、JavaScriptランタイムにデータをゆっくりとストリーミングできます。IEでは、iframeの回避策を使用する必要があります。これは、上記のSO投稿にリンクされているAjaxパターンの記事でも説明されています。

于 2012-04-16T18:10:06.470 に答える
0

system()考えられる解決策の1つは、ファイルでリダイレクトされる出力を使用してcURL呼び出しを行うことです。したがって、PHPは呼び出しが終了するまでハングしません。PHPマニュアルからsystem()

プログラムがこの関数で開始された場合、プログラムがバックグラウンドで実行を継続するには、プログラムの出力をファイルまたは別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまでPHPがハングします。

これにより、ユーザーインターフェイスから収集するデータが分割されます。次に、収集したローカルデータをいくつかの方法で操作できます。たとえば、次のようになります。

  • GUIでiFrameを使用して、一定の間隔でそれ自体を更新し、ローカルに保存されているファイルからデータをフェッチします(場合によってはデータベースなどに保存します)。
  • jQueryを使用してAJAX呼び出しを行い、データを取得して操作します。
  • バックグラウンドで実行され、データベースの書き込みも処理するCGIスクリプトを使用し、DBから直接上記のいずれかを使用してデータを表示します。
  • 今は考えられない数十以上...
于 2012-04-16T18:13:45.770 に答える