我一直在寻找使用PHP制作实时网站。 (COMET)我已经找了很长时间了。 (大约一个月)我甚至检查了一些PHP聊天脚本并在我的网络服务器上使用,但我在大多数问题上遇到了一些问题。 (将被解释)
到目前为止,大多数人都说了同样的事情:PHP并不是COMET可以使用的最佳语言。聊天/彗星的例子充其量只是hacky。
我问这个是因为,我想在我的网站上有一些功能,比如允许登录的人互相聊天。这就是我需要与PHP页面建立活动连接的地方。我也计划制作一个基于浏览器的游戏,并且仍然需要一个活跃的连接!
AJAX在2年前是一件罕见的事,在Facebook上大放异彩。现在几乎每个人都使用它,它成为Web开发的标准。现在,基于COMET的网站正在增长。 Youtube,Google +,Facebook,EA的Battlelog等。我相信我应该学习如何使用它。
好的,这是我的问题。 (下面的一些信息是我在Google上搜索时收集的信息。不确定它们是否正确。)
像Python这样的语言有专门为此工作设计的特殊Web服务器。我相信其中一个叫做Tornado Web Server。开发和配置为模拟数千个活动连接。我相信Appserv中没有这样的选项,但有些人告诉NGINX可以用一个不错的配置来处理它。这是真的吗?应该做什么配置?这个工作有没有PHP Web服务器?
一些最值得建议的事情是:
一个。使用APE。
湾使用Socket.IO
℃。 Node.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服务器。在基于Windows的操作系统上运行的彗星应用程序上依赖usleep()
是否正常?我的意思是,有没有办法“睡眠”PHP脚本?无论我做什么,WIN和UNIX服务器上的CPU负载都会达到%100。
这个领域的PHP“真的”弱吗?我应该放弃PHP并专注于其他语言吗?如果是这样,你会建议哪种语言? (那种语言应该是有前途的。例如,在添加HTML5之后没有太多使用AS3,而且当JS闪耀时,AS3更有可能很快死亡。)
什么是WebSync?可以和PHP一起使用吗?
请记住,我需要使用COMET进行以下应用程序:
如果你能给我一个简短的指导,我将不胜感激。毕竟,由于互联网上有很多随机文章,我每天都感到困惑。人们甚至将setInterval()
称为COMET,因此它完全混乱。
答案 0 :(得分:1)
这里需要澄清一些。您正在寻找的不是语言本身。如果您想通过PHP实现彗星功能,那么您将依靠Web服务器(例如Apache)来进行HTTP流式传输。此外,您还需要了解HTTP / 1.1之前的HTTP版本不支持此功能。话虽如此,如果您想要一个基于非阻塞事件的Web服务器,您最好按照建议查看Tornado和Node。
答案 1 :(得分:0)
Comet是一种编程技术,它使Web服务器能够将数据发送到客户端,而无需客户端请求它。此技术将生成比经典AJAX更具响应性的应用程序用户必须创建请求(例如通过单击链接)或定期的AJAX请求必须发生才能从服务器获取新数据。
但它会在您的网络服务器上创造大量流量。如果你想在PHP中构建聊天应用程序,请使用pusher,它是第三方服务并且易于使用。 这是推送者https://pusher.com/tutorials/realtime_chat_widget
的链接第二个建议是使用棘轮来创建聊天应用程序。 这里是ratchet http://socketo.me/docs/hello-world
的链接我希望它能帮到你