0

Postgres データベースを使用して PHP で記述された Web アプリケーションがあります。

開発の次のフェーズは、アプリのユーザーごとに 1 日に 1 回 (または要求に応じてアドホックに) 実行する必要があるバックグラウンド バッチ プロセスを構築することです。このプロセスはクエリを実行し、応答を待ち、サードパーティ サービスからの応答を処理して、Web アプリケーション内のユーザーのアカウントに情報をフィードします。

これを行う良い方法はありますか?

  • ユーザーごとに毎日午前 3 時にバッチをトリガーするにはどうすればよいでしょうか?
  • 応答が遅れる可能性があることを考えると、これはnode.jsのようなものを使用する良いシナリオですか?
  • バッチ プロセスの出力で Web アプリケーションのデータベースを適切なデータで直接更新するのが最善ですか? または、出力を処理する他の方法はありますか?

更新:プロセスは午前 3 時に実行する必要はありません重要なのは、ユーザーごとにいくつかのバッチ プロセスを実行する必要がある場合があることです。バッチの実行は 1 日中分散する可能性があります。これをアプリとは別の「バックグラウンド」プロセスにしたいと考えています。

4

1 に答える 1

1

処理が必要なすべてのユーザーに対して実行される PHP スクリプトを作成し、午前 3 時にスクリプトを実行するように cron ジョブを設定できます。cron ジョブとして実行するということは、サードパーティの呼び出しがどれほど遅いかについてそれほど心配する必要がないことを意味します。明らかに、必要なデータをデータベースに保存する必要があります。

または、ユーザーがサイトで何かを実行することによってプロセスがトリガーされる場合はexec()、PHP スクリプトをトリガーして、ユーザーを待つことなく、そのユーザーだけをすぐに処理することができます。これに伴うリスクは、プロセスがトリガーされる速度を制御できないことです。

3 番目のオプションは、リクエストをライブで行い、ユーザーを待たせることです。しかし、これはあなたにとって選択肢ではないようです。

それは、あなたが電話しているサードパーティとその理由によって異なります. サードパーティが応答するまでにかかる時間、信頼性、適用されるレート制限の種類など...

于 2013-08-15T11:02:49.430 に答える