Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Comet软件相对于标准长轮询的优势_Php_Long Polling - Fatal编程技术网

Php Comet软件相对于标准长轮询的优势

Php Comet软件相对于标准长轮询的优势,php,long-polling,Php,Long Polling,在我的一生中,我无法理解像Comed或simple comet这样的应用程序的用途,而不是像php的简单长轮询请求和这样的代码的无限循环 $time = time(); while(time() - $time < 30) { if ($query) { $shapes = ...; echo json_encode($shapes); break; } usleep(25000); } $time=time();

在我的一生中,我无法理解像Comed或simple comet这样的应用程序的用途,而不是像php的简单长轮询请求和这样的代码的无限循环

$time = time();
while(time() - $time < 30) {
    if ($query) {
        $shapes = ...;
        echo json_encode($shapes);
        break;
    }
    usleep(25000);
}
$time=time();
while(time()-$time<30){
如果($query){
$shapes=。。。;
echo json_编码($shapes);
打破
}
美国LEEP(25000);
}
在为多个请求而设计的Web服务器上运行,如lighttpd或NGIX


也许我只是不理解comet服务的文档。我知道上面是一个“Comet”请求,但是像cometd这样的东西为什么会存在,它们做得更好。

cometd和类似的软件,如Orbited,对于打破区域的责任是非常好的。我可以让我的lighttpd支持的python服务专注于做更多复杂的工作,而comet服务绑定到消息队列以处理轻消息通知(批处理请求完成后,您会收到新消息等),而lighttpd服务器处理DB请求或处理POST/PUT/DELETE请求


最后一点,Apache仍然是一个非常受欢迎的web服务器,但如果它试图保持一千个或更多的连接处于打开状态,它将在辉煌中死去。对于一个拥有大量apache服务器并希望添加comet支持的平台,使用开箱即用的解决方案比使用lighttpd或nginx的解决方案更有意义。

首先,响应之间没有250毫秒的延迟,正如您在示例中所做的那样。此外,您不必为每个活动连接都有一个完整的单独PHP进程。那些东西很重。每个服务器打开的comet连接应该比使用等效的PHP长轮询解决方案打开的comet连接多得多。@frank apache是唯一为每个连接留有线程的Web服务器。lighttpd实际上是为多线程连接而设计的。不过,PHP本身并不是真正的线程安全的——当然,许多PECL模块不是。使用lighttpd/nginx,每个活动连接不都会运行一个PHP CGI进程吗?@Frank从我读到的内容来看,不,我将尝试为我的问题添加一些来源