0

UNIXローカルソケットを介してサーバーと通信するphpスクリプトを作成しています。1)接続2)socket_write()を使用してメッセージを送信(時間の90%が小さいサイズのブロック、10%が大きいサイズ)3)答えを得る4)接続を閉じる

これで、 phpマニュアル「jeanat briskula dot si 03-Feb-201103:00」からのコメントで提案されているような単純なsocket_write()実装があります。

ブロッキングモードでは問題なく動作するようですが、socket_writeのタイムアウトを実装したいので、socket_write()が呼び出されたときに非ブロッキングモードを使用する必要があると思います。

非ブロッキングよりもブロッキングモードの利点はありますか?タイムアウトを実現する理由はありますか?それらを正しく実現する方法は?例はありますか?

whileサークルに書き込もうとしましたが、=== FALSEになりました。おそらく、socket_write()が呼び出される前に毎回socket_select()を実行する必要がありますか?

ps。この質問は、サーバーから回答を読み取るときのsocket_read()でも実際に発生します

4

1 に答える 1

1

ソケットを介してバックエンド システムとの間でデータを送受信する PHP (Web 向け) スクリプトの場合、その間に他の処理を行う機会はありません (これが基本的に、最初にノンブロッキング モードを使用する理由です)。 、ノンブロッキングモードが引き起こす合併症を処理しても意味がありません。

したがって、ブロッキング モードを使用してください。

于 2012-04-12T10:43:57.580 に答える