我曾尝试阅读一些文章,但我对这些概念还不是很清楚.
有人愿意尝试向我解释这些技术是什么:
我每次遇到的一件事是,服务器保持连接打开并将数据推送到客户端.如何保持连接打开,客户端如何获取推送数据?(客户端如何使用数据,也许某些代码可能会有帮助?)
现在,我应该将其中哪一个用于实时应用.我一直听说很多关于websockets(有socket.io [一个node.js库]),但为什么不用PHP?
我正在考虑使用PHP后端实现实时聊天,但我在讨论彗星的网站上遇到了这个评论:
我的理解是,对于Comet来说,PHP是一种可怕的语言,因为Comet要求你保持对每个浏览器客户端的持久连接.使用mod_php这意味着为每个不完全扩展的客户端占用Apache全职儿童.我认识Comet的人大多使用Twisted Python,它可以处理数百或数千个同时连接.
这是真的?或者是可以配置的东西?
Caplin等许多Comet实现都提供了服务器可扩展的解决方案
以下是Caplin网站的统计数据之一:
Caplin解释器的单个实例可以支持多达100,000个客户端,每个客户端每秒接收1条消息,平均延迟小于7毫秒.
如何与任何网络服务器上的HTML5 websockets进行比较?任何人都可以指向任何HTML 5 websockets统计信息?
这是我的问题:我有一个脚本(让我们称之为comet.php)由AJAX客户端脚本提供,并等待更改发生如下:
while(no_changes){
usleep(100000);
//check for changes
}
Run Code Online (Sandbox Code Playgroud)
我不太喜欢这个,它不是很可扩展,它是(imho)"糟糕的做法"我想用信号量(?)或无论如何并发编程技术来改善这种行为.你能告诉我一些如何处理这个问题的技巧吗?(我知道,这不是一个简短的答案,但一个起点就足够了.)
编辑:LibEvent怎么样?
comet ×4
php ×3
websocket ×2
concurrency ×1
html5 ×1
long-polling ×1
push ×1
reverse-ajax ×1
semaphore ×1