我想创建一个类似跳棋的实时应用程序,它的工作方式如下:此棋盘格上会显示多个图标/头像。我希望在这个板或其他类型的界面下面有一个命令提示符,它将允许他们控制某个头像,并让它预先形成动作。 多个用户将一次使用它,我将能够查看其他用户对棋盘的更改/操作。
我想知道的是:最好的方法是什么?我的HTML,CSS和JS方法已经关闭,但不是我的数据存储方法。我知道,使用PHP,我可以选择使用:基于文件的存储,MYSQL或其他一些方法。我需要知道哪个更好,因为我不想有服务器滞后,响应时间差或其他问题,特别是在这种情况下,因为这些多个用户会每隔2秒左右执行一次操作
之前我做过类似的事情,但是我想听听别人如何处理它(建议等)来自更有经验的程序员。
答案 0 :(得分:7)
听起来像node.js的一个很棒的项目!
为了澄清,node.js是javascript的服务器端实现。你想要的是一个基于彗星的应用程序(一个基于Web的客户端应用程序接收服务器端推送,而不是客户端不断轮询服务器),这正是node.js擅长的。
传统的ajax要求您的客户端轮询服务器以获取数据。这为客户端和服务器带来了巨大的开销。允许服务器将请求直接推送到客户端,而客户端不会反复询问解决开销问题并创建响应更快的接口。这是通过在服务器上保持异步客户端连接来实现的,并且仅在服务器有响应时才返回。一旦服务器响应数据,服务器立即创建并保持另一个连接,直到数据准备好发送。
你可以用PHP完成同样的事情,但我不熟悉PHP和Comet类型的应用程序。
用户数和托管成本将在您的文件与数据库选项中发挥作用。如果您计划的不仅仅是几个用户,我会坚持使用数据库。有一些NoSQL选项可供选择,但根据我的经验,MySQL比这些选项更快,更可靠。
祝你的项目好运!
http://en.wikipedia.org/wiki/Comet_%28programming%29
http://zenmachine.wordpress.com/2010/01/31/node-js-and-comet/
http://socket.io/ - 根据客户的能力(LongPolling,WebSockets等)与客户进行通信层抽象。
答案 1 :(得分:0)
MySQL和XCache !!!!
确保使用预定义语句,以便MySQL不需要再次编译SQL。 memtables也可用于使用内存存储
当然要适当地使用索引。
如果“游戏状态”不重要,您甚至可以将所有内容存储在XCache中。 请记住,XCache不会持久存储数据(在Apache重启后)