Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中基于回合的web游戏-通信问题_Php_Communication - Fatal编程技术网

PHP中基于回合的web游戏-通信问题

PHP中基于回合的web游戏-通信问题,php,communication,Php,Communication,我正在PHP5中开发一个基于回合的网络游戏 这是一个非常简单的游戏,一种棋盘游戏:两个人加入一个“会话”,他们一直玩到其中一个人赢为止 简而言之,我的问题是: 用户A和用户B玩一个游戏 用户A完成了他的回合 请求将被发送到服务器以执行必要的操作 现在是用户B移动的时候了 但是我怎样才能通知用户B这件事呢 我的意思是,现在服务器必须与另一个用户通信,该用户是非活动的,而不是发起请求的用户 我知道这可以通过使用某种定期的AJAX调用来实现,该调用检查对手是否完成了他的回合等,但是这样会生成大量的

我正在PHP5中开发一个基于回合的网络游戏

这是一个非常简单的游戏,一种棋盘游戏:两个人加入一个“会话”,他们一直玩到其中一个人赢为止

简而言之,我的问题是:

  • 用户A和用户B玩一个游戏

  • 用户A完成了他的回合

  • 请求将被发送到服务器以执行必要的操作
  • 现在是用户B移动的时候了
但是我怎样才能通知用户B这件事呢

我的意思是,现在服务器必须与另一个用户通信,该用户是非活动的,而不是发起请求的用户

我知道这可以通过使用某种定期的AJAX调用来实现,该调用检查对手是否完成了他的回合等,但是这样会生成大量的请求

难道没有更好的办法解决这个问题吗

我在想这样的事情:

  • 用户A的轮到结束
  • 发球者保存他的分数
  • 服务器联系用户B
  • 轮到用户B开始
以某种方式使用PHP和comet样式的请求是否可能做到这一点?还是有更好的方法

任何帮助都将不胜感激


提前谢谢

当前正在运行的游戏/回合的内存数据库,以及用户B每隔1.5秒左右进行一次检查,不会产生大量请求或服务器负载

你甚至可以有一个投票方案,比如7秒、5秒、3秒、2秒、1秒、1秒等等,这取决于你的游戏

您甚至可以将PHP完全排除在外,只要在每次轮到您时触摸会话文件,并检查最后修改的客户端。

PHP套接字

server listen
client_a connect
client_b connect
client_a send start game to server
client_a send move to server
server send play client_b
[...]