ホームページ  >  記事  >  バックエンド開発  >  PHPソケットの長期接続と複数の往復通信に関する例やチュートリアルを探しています

PHPソケットの長期接続と複数の往復通信に関する例やチュートリアルを探しています

WBOY
WBOYオリジナル
2016-06-13 12:17:03826ブラウズ

PHP ソケットの長い接続を使用した複数の往復通信の例またはチュートリアルを探しています
インターネットで見つかる例には、おそらく次のような処理フローがあります:
socket_create //Connect
socket_bind //Bind
socket_listen // Listen

do {
if (socket_accept 接続受信)
{
ソケット_read // 受信した情報を読み取る
ソケット_write // 応答情報を返信する
}
ソケット_クローズ //接続を閉じます
} while(true);

リクエストを受信した場合は、受信した情報を読み取り、応答します。応答すると、接続が閉じられます。
(サンプルコードから上記の処理フローを誤解した可能性があります)
この例をテストした後、問題は次のとおりであることがわかりました。この例では、クライアントが長時間の接続を維持できないようです。 : 「リクエストを受信すると、受信した情報を読み取って応答します。応答後、接続を閉じます。

複数ラウンドの実装プロセスについて誰かがアドバイスをくれることを願っています。」 -php ソケットの長い接続での通信、またはチュートリアルまたは例を教えてください
-----解決策のアイデア-------------- --------
あなたはここにいません ループソケット_close //内で接続を閉じるだけでは十分ではありませんか?
------解決策のアイデア----------------------
なぜそうする必要があるのか独自の php ソケット サーバーを使用しますか? 書くときは、ワーカー ソケット サーバー フレームワークを使用してください。長いリンクか短いリンクかは、安定していて、パフォーマンスが高いということです。 🎜>------解決策のアイデア- ------------------------

<br />if (($msgsock = socket_accept($sock)) === false)<br />{<br />	echo "套接字接收失败,原因:".socket_strerror(socket_last_error($sock)) . "\n";<br />	break;<br />}<br />do {<br />	echo '阅读客户端消息\n';<br />	$buf = strlen(socket_read($msgsock, 8192));<br />	$talkback = "客户端说:$buf\n";<br />	$talkback = "服务器端说:好啊\n";<br />	flush();<br />	if (false === socket_write($msgsock, $talkback, strlen($talkback))) {<br />		echo "套接字写失败,原因:" . socket_strerror(socket_last_error($sock)) ."\n";<br />	} else {<br />		echo '发送成功';<br />	}<br />	//socket_close($msgsock);<br />	//flush();<br />} while(true);<br />

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。