欲望:ソケットに接続し、毎秒「実行中」をクライアントに送信したい。
もちろんこれはテストです。
問題:出力「実行中」は、クライアントがデータを送信するときにのみ送信されます。クライアントが書き戻すのを待ってループが一時停止しているようです。
コード:
$socket = @socket_create_listen("12345");
while (true) {
$client = socket_accept($socket);
$msg = "\nHello"."\r\n".chr(0);
$length = strlen($msg);
socket_write($client, $msg,$length);
usleep(5);
while (true) {
$msg = 'running'."\r\n".chr(0);
$length = strlen($msg);
socket_write($client, $msg, $length);
sleep(1);
}
}
例:上記のコードは、サーバー上のファイルにあります。このファイルを実行し、telnet を使用してポート 12345 でサーバーに接続するとtelnet myip# 12345
、コンソールに毎秒「実行中」と表示されるはずでした。代わりに、「実行中」は一度だけ書き込まれます。コンソールに何かを入力すると (サーバーにデータを書き込むなど)、running が再び表示されます。したがって、サーバーに何かを送信すると、コンソールにのみ送信されます。
何が原因でしょうか?
ありがとうございます