我目前正在编写多人 Connect 4 游戏。当玩家移动时,该移动将写入包含 Connect 4 棋盘上每个位置状态的文件。
我目前有一个带有延迟循环的 PHP 脚本,它检查自上次循环迭代以来的更改,如果有更改,PHP 脚本会返回更新后的文件以发送给播放器。
这种方法效率极低且混乱;有没有更好的方法可以立即通知游戏的变化?
另外,我尝试使用 inotify,但它似乎不适用于我的服务器。(Mac OS X Server 10.8,所以这可能就是为什么......)
我目前正在编写多人 Connect 4 游戏。当玩家移动时,该移动将写入包含 Connect 4 棋盘上每个位置状态的文件。
我目前有一个带有延迟循环的 PHP 脚本,它检查自上次循环迭代以来的更改,如果有更改,PHP 脚本会返回更新后的文件以发送给播放器。
这种方法效率极低且混乱;有没有更好的方法可以立即通知游戏的变化?
另外,我尝试使用 inotify,但它似乎不适用于我的服务器。(Mac OS X Server 10.8,所以这可能就是为什么......)
在后台进行轮询以获得这样的更改并不少见。你能更具体地说明你不喜欢什么吗?
如果您正在寻找更聪明的东西,每个玩家都可以向“游戏会话”API 异步打开一个保持活动请求。该实现可以监视文件的更改并在检测到更改时发送下一个块。更改是来自文件还是来自数据库取决于服务器实现。当然,您的客户端应用程序需要确保请求保持打开状态并在关闭时重新连接。
在 PHP 中很难,使用node.js怎么样?它内置了这些功能。