2

サーバースクリプトが呼び出す単純なソケットphp5.3スクリプトを作成しました...

socket_select($read_set, $write_set, $exception_set, 2);

...ループ内。非ブロッキングソケットを使用していて、スクリプトはWin7マシンで実行されています。

問題:この関数はスクリプトを2秒間ブロックします。これは、4番目のパラメーター($ tv_sec)がこのブロックを引き起こすことを意味します。

私の質問:$tv_secまたはの違いは何$tv_usecですか?何をし$tv_usecますか?

PHPマニュアルの関数の説明:

socket_select(array&$read, array&$write, array&$ex, int $tv_sec[,int $tv_usec=0])

tv_sec: tv_secとtv_usecが一緒になってタイムアウトパラメータを形成します。タイムアウトは、socket_select()が戻るまでに経過した時間の上限です。tv_secがゼロの場合、socket_select()がすぐに返されます。これはポーリングに役立ちます。tv_secがNULL(タイムアウトなし)の場合、socket_select()は無期限にブロックできます。

tv_usec:説明なし

4

1 に答える 1

1

$ tv_usecパラメーターは、socket_select()関数が指定されたマイクロ秒後にタイムアウトするようにする場合に使用されます。これは、たとえば、選択が1秒未満後にタイムアウトするようにする場合に役立ちます。

于 2012-03-20T17:48:20.650 に答える