我有一个使用 PHPSockets 的多人服务器,因此完全用 PHP 编写。
目前,每当我对 PHP 服务器脚本进行任何更改时,我都必须终止该脚本,然后重新启动它。这意味着任何在线用户都已断开连接(通常不是问题,因为目前没有那么多)。
现在我正在重写服务器脚本以使用自定义 PHP 类并稍微整理一下(你不想知道它今天看起来有多讨厌)。今天我在想:“难道不应该在不必重新启动整个脚本的情况下对 php 源代码进行更改吗?”。
例如,我计划创建一个main.php
文件,user.php
其中包含包含 classMyUser
和game.php
包含 class的文件MyGame
。现在假设我想对服务器进行更改user.php
并“重新加载”服务器,以便更改user.php
生效,而不断开任何在线用户?
我试图找到其他回答这个问题的问题,我得到的最接近的是这个问题:修改一个正在运行的脚本并让它重新加载而不杀死它(php),但这似乎并没有解决在线用户的断开连接问题。
更新
我自己的解决方案是:
- 在特殊情况下,包含文件 external.php,它可以访问一些变量并根据需要使用它们。这样做时,我必须确保代码中没有错误,因为如果我尝试访问不存在的方法,整个服务器将会崩溃。
- 将整个事情重写为 Java,这使我有可能使用动态类重新加载来添加插件系统。奇迹般有效。再见 PHP。