【发布时间】:2011-05-17 23:08:28
【问题描述】:
我正在编写 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 并没有真正的线程。处理此问题的最佳方法是什么?
【问题讨论】:
-
我不认为 PHP 是客户端技术的最佳选择。考虑 Python、Java 或 .net。
-
是的,我知道,我还没准备好。客户端已经用 Java 编写,我正在重写。试图决定一种语言。你在 Python 中有类似的例子吗?
标签: php multithreading sockets game-loop