【发布时间】:2014-06-24 11:21:51
【问题描述】:
我已经使用普通的 Apache 服务器、PHP、AJAX 和 Javascript 成功实现了长轮询。我不使用 Jquery 与服务器通信。
问题是 Apache 服务器功能有限,服务器无法提供超过 5 个浏览器选项卡。
我想知道是否对 Apache 或 PHP 进行了任何自定义以使它们处理更多的并发连接?或者是否有任何新的/智能技术可以做到这一点?专门用于长轮询的强大 Web 服务器可以处理的最大线程数是多少?
由于浏览器的兼容性,我对 Web Sockets 不感兴趣。我需要一些简单而健壮的PHP。脸书在做什么?我想知道他们如何处理数百万用户的所有动态更新!他们使用什么产品/技术?
我的代码示例:
srv_polling.php
<?php
function getResults(){..... return result;}
// recursive function inside the server
function hasResultChanged($old,$timeStart){
// to avoid server timeout (in seconds) in case no change for results
if(round(abs(time() - $timeStart) / 60*60,2) > 50)
return;
$new = getResults();
if($new != $old) // get back to browser
return true;
else{
$old = getResults();
sleep(2);
return $hasResultChanged($old,$timeStart);
}
}
$timeStart = time();
$old = $getResults();
sleep(2);
$hasResultChanged($old,$timeStart);
?>
// Javascript code to be executed at browser end
alert('Result has changed');
// Send AJAX request again to same page(srv_polling.php):
ajax.call({......})
感谢您的提示!非常感谢。
【问题讨论】:
标签: php ajax apache long-polling