所以我的问题是: 通过PHP建立服务器 - 客户端连接的最佳方法是什么? 我的第一种方法(我现在正在使用的)是用AJAX做的。 (使用jQuery)
更具体一点: 我有一个大厅和一个游戏模式,我的首要任务是聊天和游戏内用户。
我现在正在做的事情:我有一个PHP文件,可以为游戏中的每个用户更新数据库中的记录,以及另一个定期查询此文件的文件。 (让我们说每5秒) 这个问题,有很多mysql调用,很多ajax调用,有时当ajax无法及时加载时,记录不会及时更新,ergo - >用户断开连接。
请注意,我的论文需要这个,所以即使你给我一些链接,我也有时间做这个功课。
欢迎任何答案和提示! 提前谢谢。
答案 0 :(得分:0)
您可以首先在AJAX调用上设置时间限制,然后通过仔细检查来处理任何错误,而不是仅断开用户连接。
真的,每五秒一次电话就不多了。
答案 1 :(得分:0)
你可以查看Comet,它使用“长轮询”来保持连接打开,允许在没有轮询的情况下进行通信。
问题是这需要服务器上有更多资源,因为它可能需要同时打开大量连接。如果您在具有多个服务器的托管服务器上,管理状态可能会变得令人头疼,因为您需要将用户粘贴到单个IP /服务器或管理服务器之间的状态。你正在为另一组资源交换一套资源。
您可能需要考虑的一点是(除了Coment之外)使用REDIS或MEMCACHED保留DB内存驻留,以大大提高数据库性能。
答案 2 :(得分:0)
答案 3 :(得分:0)
另一种方法是使用共享内存 - PHP: Semaphore, Shared Memory and IPC。
潜在的问题可能是系统强加的共享内存限制。此外,访问共享资源可能会变得复杂,因为您必须确保它们不受同时读/写的影响。但是,这应该比使用数据库更快。数据可以每分钟或每半分钟刷新一次数据库等等。
如果游戏模式每秒需要大量的请求/响应,那么创建一个单独的程序来处理游戏逻辑将是一个更好的解决方案,而不是使用PHP。
另一种选择是使游戏具有状态(如果可能的话)。