0

PHPで開発されたアプリケーションがあります。私のアプリには、何百ものシステムが記録されています。15 分ごとに、すべてのシステムに接続してステータス (CPU 使用率など) を追跡し、Web ページに戻す必要があります。ここでの問題は、コードが各システムに接続し、クエリ コマンドを 1 つずつ実行するため、プログラムが非常に遅くなることです。今のところ、すべてのシステム ステータスを追跡するのにさらに 15 分以上かかります。つまり、2 回目の 15 分では、最初のクエリが完了していません。PHPでシステムに並行して接続する方法はありますか? たとえば、1 つのスレッドを使用して最初の 10 システムに ssh し、その間に別のスレッドを使用して別の 10 システムに ssh します。ありがとう。

4

1 に答える 1

0

システムの接続情報 (ホスト名または IP アドレス) を配列に入れ、それらをループして、システムごとにforkします。分岐後、システムに対してクエリを実行します。すべてのクエリは新しいスレッドで発生し、他のすべてのクエリと非同期で実行されます。フォークされた子プロセスが作業を完了するのを待ってから、スクリプトを終了します。

これは、次のクエリに移る前にすべての応答を待つ必要がないため、すべてのクエリを同期的に実行するよりもはるかに高速に機能します。

サーバーの仕様とリモート システムの量によっては、作成されるスレッドの量を制限したい場合があります。


注: Windows では PHP pcntl を使用できません (こちら を参照してください)。

于 2013-08-07T19:55:30.057 に答える