我正在编写 PHP 代码作为游戏客户端。它使用套接字;socket_create 后跟 socket_connect,然后是 socket_read。它工作正常,但问题是服务器可以随时发送数据包,这意味着 socket_read 需要在“游戏循环”中不断发生。所以是这样的:
<?php
$reply = "";
do {
$recv = "";
$recv = socket_read($socket, '1400');
if($recv != "") {
$reply .= $recv;
}
} while($recv != "");
echo($reply);
?>
不起作用,因为它卡在循环中(服务器不会终止连接,直到客户端退出游戏)并且 PHP 代码需要在数据包进入时对其进行处理。
所以 PHP 并没有真正的线程。处理这个问题的最佳方法是什么?