私はphpでソケットを学び、理解しようとしていますが、whileループに少し問題があります。
これは私の基本的なコードです:
クライアント側
<?php
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$res = socket_connect($socket, '127.0.0.1', 2000);
$input = "Client to Server Message";
socket_write($socket, $input, strlen($input));
$res = socket_read($socket, 1024);
echo $res;
socket_close($socket);
?>
そしてサーバー側
<?php
set_time_limit(0);
$address = "127.0.0.1";
$port = 2000;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $address, $port) or die("Can't bind the socket");
socket_listen($socket);
echo "Server waiting connexion...";
$client = socket_accept($socket);
$input = socket_read($client, 1024);
echo "\nInput : ".$input;
$output = 'Server to Client Message';
socket_write($client, $output);
socket_close($client);
socket_close($socket);
echo "\nServer closed";
?>
それは機能しますが、クライアント側からの複数のメッセージを処理するためにサーバー側に while ループを追加したい場合、ブラウザは無限ループを実行し、サーバーからメッセージを取得できません。
これを機能させるにはどうすればよいですか?
誰かがPHPのみでソケットを使用してチャットのようなことを行う基本的な方法を説明してもらえますか(socket.ioとNodeJsでこれを行うことができます)、またはWeb上の優れたチュートリアルに送ってもらえますか?