0

あなたが助けてくれることを願っています!私は現在、ある Web システムから別の Web システムにデータを移植する (データのバックアップを考えてください) PHP スクリプトを作成してテストしています。このスクリプトは、無数のユーザーに対して毎日実行する必要があります。プルする必要があるデータの量にもよりますが、このスクリプトはかなり集中的です (これまでに確認した最長の実行時間は約 30 分です)。

それを考えると、ジョブ全体がタイムリーに完了しないため、それらを次々に実行したくないことは明らかです。したがって、理想的には、最大 10 個のバックアップ (サーバー容量の増加に応じて拡張できます) を同時に実行できるように、ジョブをスケジュールする何らかの方法が必要です。1 つのスクリプトが完了すると、パイルの一番上 (10 個ではなく 1 個のパイル) にある次のスクリプトを取得して実行します。現在、一部のインスタンスが致命的なエラーで失敗して終了する可能性があります (この段階では可能性が高い)。カスタムエラーハンドラーで処理しているので、それで問題ありませんが、明らかに、1 つのインスタンスの失敗が他のインスタンスに影響することは望ましくありません。

ここで他の質問をいくつか読んで、PHP の fork と Supervisord が議論されているのを見てきましたが、正直なところ、7 年前にプロセス スケジューリングに関する論文を思い出すと、私は打ちのめされました。可能であれば、このようなものを実装する方法についてアドバイスをもらえると本当に素晴らしいでしょうか? ありがとう :)

4

1 に答える 1

0

proc_openを使用して、複数のコマンドを非同期で実行することをお勧めします。バックアップ プロセス自体が PHP スクリプトである場合は、php バイナリを使用して実行できます (例: php mybackupscript.php)。

于 2013-06-26T21:52:48.073 に答える