0

PHP では、私のスクリプトはサーバーがオンラインかどうかのみをテストしようとしています。それ以上のことはありません。すべて同時に実行される複数のソケット ストリームを作成するにはどうすればよいですか? 多数のサーバーをテストしている場合、次々と実行すると永遠に時間がかかります。

4

2 に答える 2

1

selectを使用します。これは、読み取りまたは書き込みを行うソケットのリストを取得し、準備ができたら通知します。これらに対して読み取り/書き込みを行うと、データを取得/送信できることがわかります。次に、それらのソケットで必要なことを処理し、戻ってもう一度選択し、さらにデータを待ちます。

他のことも行う必要がある場合は、選択時にタイムアウトを設定すると、ソケットで何も準備ができていなくても、その時間内に戻ります。

編集:また、選択の使用方法を理解したら(それほど難しくありません)、スレッド間の同期を処理するよりもデバッグと処理が非常に簡単です。

于 2013-09-22T22:54:47.413 に答える
1

通常、スレッドのプールを開始すると、スレッドはテストが必要なすべてのサイトをキューから読み取ります。これにより、各スレッドがサイトへの接続を開くことができます (同時実行をサポートします)。

または多分pthreads?私は知らない、私はPHPでスレッド化されたコードを書いたことがない

于 2013-09-22T22:03:36.400 に答える