0

自動化されたタスクを 15 ごとに実行する必要があります。タスクは、サーバー (サーバー A、Ubuntu 10.04 LAMP と呼びます) が別のサーバー (サーバー B) への更新を照会するためのものです。

クエリを実行するユーザーが複数います。おそらく 14 人 (またはそれ以上) のユーザーです。現在のところ、スクリプトは PHP で記述されています。彼らは次のことを行います。

  1. サーバー B にユーザーの更新を要求する
  2. サーバー B が更新があると言うと、サーバー A が更新を取得します。
  3. サーバー A で、ユーザーの新しいデータで DB を更新します。
  4. サーバー A で計算を実行する
  5. データの更新を受信したユーザーにプロンプ​​トを送信します。

cron ジョブが最適な方法であることはわかっていますが、すべてのユーザーに対して cron ジョブを使用するシナリオが存在する可能性があります。それは合理的ですか?それとも、すべてのユーザーのデータを照会する 1 つの cron ジョブに強制する必要がありますか?

また、クエリを実行しているサーバーには、クエリに使用できる Java API があります。これは、同じことを行う Java サーブレットを開発できることを意味します。このアプローチには問題がありましたが、これが正しい方法である場合はフィードバックを探しています。私は Tomcat に詳しくなく、まだ完全には理解していません。

概要: サーバーが 15 分ごとに自動的にタスクを実行し、別のサーバーからのデータを要求し、その DB を更新してから、ユーザーにプロンプ​​トを送信する必要があります。推奨されるアプローチは何ですか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

cron によってトリガーされ、各ユーザーをループし、各ユーザーに対して 3 つの手順すべてを実行する単一のスクリプトを作成します。

query for list of users from local DB;
foreach(users as user){
   check for updates;
   if(updates){
      update db;
      email user;
   }
}

多くのユーザーがいる場合、または API が遅い場合は、長いスクリプト タイムアウト (ini_set) を設定するか、TIMESTAMP DB 列「LastUpdateCheck」を追加して cron をより頻繁に (30 秒ごとに?) 実行することができます。ただし、更新/API クエリをインスタンスごとに 1 人または 2 人のユーザー (更新時間が最も古いユーザー) に制限します。

于 2012-04-28T23:01:03.343 に答える