2

私は主にツールを作るインターネットマーケティング会社のプログラマーです。これらのツールには、認証者の要件があります。

  • それらはブラウザで実行され、それらすべてで動作する必要があります。
  • ユーザーは処理するもの(.csv)をアップロードするか、URLを提供し、API呼び出しを行ってそれに関する情報を取得します。
  • 彼らは何千行ものデータを移動しています(大規模なデータベースを考えてみてください)。これらのツールは文字通り何時間も、通常は一晩実行されます。
  • ユーザーは、情報が処理されて提示されるときに、ライブで視聴できる必要があります。

現在、PHP、MySQL、Ajaxで書いています。

私の質問は、大量のデータを処理し、ツールの実行中にユーザーエクスペリエンスを提供するにはどうすればよいかということです。現在、私はajax呼び出しを送信し、行をテーブルに挿入したり、データをdivに挿入したりするカスタムキューシステムを使用しています。

この方法はお尻の大きな痛みであり、おそらく正しい方法ではありませんでした。テンプレートシステムを使用する必要がありますか、それとも大量のデータでページのチャンクを更新するためのより良い方法がありますか。そして、PHPメモリの最大化に近づき、常に探しているものであるため、私は本当に多くのデータを意味します。

また、これらのツールがサーバー上で単独で実行できるようにしたいと思います。つまり、.csvをアップロードしてブラウザウィンドウを閉じ、ツールが完了したらユーザーにメールを送信します。

.ajax呼び出しを使用するよりも優れたメソッド(プログラミング標準)を誰かが持っていますか?ありがとうございました。


誰かが同じ質問をする場合に備えて、いくつかのメモで更新したいと思いました。私は次のことを調べて、どれが最良の解決策であるかを調べています。

  • SlickGrid / DataTables
  • GearMan
  • Webソケット
  • ラチェット
  • Node.js

これらは特定の順序ではなく、私が選択するものは、私の問題に有効なものと、私の部門の他のメンバーが使用できるものに基づいています。ゴールデンフレームワークを選んだら更新します。

4

3 に答える 3

1

ある種のキューマネージャーを使用して、バックグラウンドで必要なものを実行できると思います。私は CakePHP で同様のものを使用しており、時間のかかるプロセスをバックグラウンドで非同期に実行できるため、ブラウザーを開く必要はありません。

これのもう 1 つの利点は、実行中のキュー ワーカーの数を簡単に増やすことができるため、スケーラブルであることです。

基本的に PHP では、キュー データベースで保留中のタスクをチェックするワーカーを起動する、時々実行される cron ジョブが必要です。何も見つからない場合は、表示されるまでループで実行され続けます。

于 2013-04-10T16:48:23.003 に答える
1

まず、Ajaxではビッグデータを扱うことができません。ユーザーがプロセスをライブで監視できるようにするには、Web ソケットを使用してこれを行うことができます。あなたは PHP の経験があるので、まったく新しいRatchetをお勧めします。

一方、計算を行ってビッグデータを保存するには、MySQL の代わりに NoSQL を使用します。

于 2013-02-01T17:10:41.610 に答える
1

すでに時間に追われているので、 Node.jsへの移行は時間に敏感ではないかもしれません。また、ポーリングなしでブラウザー通知プッシュを実行できるため、結果の準備ができたときにユーザーに通知するという問題にも役立ちます。Javascript を使用しているため、クライアント側のコードの一部が再利用可能であることがわかる場合があります。

于 2013-02-01T18:33:51.443 に答える