我一直在寻找使用 PHP 制作实时网站。(彗星)我已经找了很长时间了。(大约一个月)我什至检查了一些 PHP 聊天脚本并在我的网络服务器上使用,但我在其中大部分都遇到了一些问题。(将解释)
到目前为止,大多数人都在说同样的事情:PHP 并不是可以与 COMET 一起使用的最佳语言。聊天/彗星的例子充其量是hacky。
我问这个是因为,我想在我的网站上有一些功能,比如允许登录的人互相聊天。这就是我需要与 PHP 页面建立有效连接的地方。我还计划制作一个基于浏览器的游戏,并且仍然需要一个活跃的连接!
AJAX 是 2 年前稀有的东西,在 Facebook 上大放异彩。现在几乎每个人都在使用它,它成为了 Web 开发的标准。现在,基于 COMET 的网站正在增长。Youtube、Google+、Facebook、EA 的 Battlelog 等。我相信我应该学习如何使用它。
好的,这是我的问题。(下面的一些信息是我在谷歌上搜索时收集的。不确定它们是否正确。)
像 Python 这样的一些语言有专门为这项工作设计的 Web 服务器。我相信其中之一叫做 Tornado Web Server。开发和配置以模拟数千个活动连接。我相信 Appserv 中没有这样的选项,但有人告诉 NGINX 可以通过一个不错的配置来处理它。这是真的吗?应该做哪些配置?是否有适用于此工作的 PHP Web 服务器?
一些最建议的事情是:
一个。使用 APE。
湾。使用 Socket.IO
C。节点.js
有什么方法可以将它们与 PHP 一起使用?哪一个最有前途?你能给他们一些指导吗?除了这些还有别的吗?
我使用了彗星聊天脚本。基本上,您一直在查询数据库,并通过在循环中使用 usleep() 将其休眠,并使用 flush() 将结果输出到浏览器。(这个变得难以理解,所以我将提供一个快速代码)
while(true) { // query database // output the result // flush the browser // sleep for few seconds to lower cpu load }
usleep()
功能基本上破坏了我在基于 Windows 的操作系统上的 Web 服务器。依赖在usleep()
基于 Windows 的操作系统上运行的彗星应用程序是否正常?我的意思是,有没有办法让 PHP 脚本“休眠”?无论我做什么,WIN 和 UNIX 服务器上的 CPU 负载都会达到 %100。
PHP 在这方面“真的”那么弱吗?我应该放弃 PHP 并专注于其他语言吗?如果是这样,您会建议哪种语言?(那个语言应该是有前途的,比如HTML5加了AS3就没什么用了,JS大放异彩的时候AS3很快就死了。)
什么是 WebSync?它可以与PHP一起使用吗?
请记住,我需要使用 COMET 进行以下应用程序:
- 一个聊天脚本,登录的玩家将能够互相聊天。
- 基于浏览器的游戏。我在编码时已经使用了 JSON/AJAX 之类的东西,但是要接收对手的步骤,我应该提取数据,因此需要一个活动连接。(不要想象高级游戏,我说的充其量是国际象棋之类的游戏。)
如果您能给我一个简短的指导,我将不胜感激。毕竟,自从互联网上有很多随机文章以来,我每天都感到困惑。人们甚至称它为setInterval()
COMET,所以它是一团糟。