ホームページ > バックエンド開発 > PHPチュートリアル > socket_select()、教えてください

socket_select()、教えてください

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 12:05:07
オリジナル
1252 人が閲覧しました

ソケット_select()、説明してください
socket_select() の機能を説明してください。PHP マニュアルを見ると、どのような状況でブロックするのか、どのような場合に実行を継続するのかを説明します。 🎜>

<br />int socket_select ( array &$read , array &$write , array &$except , int $tv_sec [, int $tv_usec = 0 ] );<br /><br />//socket_select() accepts arrays of sockets and waits for them to change status. Those coming with BSD sockets background //will recognize that those socket resource arrays are in fact the so-called file descriptor sets. Three independent arrays of //socket resources are watched.<br /><br />//param<br /><br />/*<br />read<br />The sockets listed in the read array will be watched to see if characters become available for reading (more precisely, to see if a read will not block - in particular, a socket resource is also ready on end-of-file, in which case a socket_read() will return a zero length string).<br /><br />write<br />The sockets listed in the write array will be watched to see if a write will not block.<br /><br />except<br />The sockets listed in the except array will be watched for exceptions.<br /><br />tv_sec<br />The tv_sec and tv_usec together form the timeout parameter. The timeout is an upper bound on the amount of time elapsed before socket_select() return. tv_sec may be zero , causing socket_select() to return immediately. This is useful for polling. If tv_sec is NULL (no timeout), socket_select() can block indefinitely.<br />*/<br />
ログイン後にコピー

-----解決策---------------------------- どこでブロックされていますか?
socket_select は 3 つのソケット配列を受け入れ、配列内のソケットが動作可能な状態であるかどうかを確認します (返されるときに動作可能なソケットのみが保持されます)
最も使用されるのは $read なので、読み取りを例にとります
ソケット配列 $read には、最初にサーバー側のリスニングソケットが存在する必要があります
ソケットが読み取り可能である場合は、ユーザーが接続を開始したことを意味します。この時点で、接続用のソケットを作成し、それを $read 配列に追加する必要があります
もちろん、サーバーによって監視されているソケットが読み取り可能になるだけでなく、この時点でユーザーのソケットも読み取り可能になります。ユーザーによって送信されたデータを読み取ることができます。
socket_select は、ソケット配列が変更された場合にのみ返されます。言い換えれば、socket_select の次のステートメントが実行されると、操作

を必要とするソケットが存在する必要があります。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート