【发布时间】:2015-01-10 04:25:04
【问题描述】:
我在用于开发的 Windows 8.1 机器上安装了 Wamp。我的问题是,当我运行正在执行轮询的脚本时,Apache 不会在合理的时间内为我提供来自我正在处理的特定 Web 应用程序的页面。这是脚本及其后端实现
window.fetch_messages = function () // I call this when my page is loaded
{
var last_message = $("div.message:last").attr('data-ai_id');
var project_id = getParameterByName('project-id'); // Another one of my helpers
$.ajax({
url:'project_messages',
type:'POST',
data:{ project_id:project_id, latest_message:last_message },
timeout:50000,
success:new_messages,
error:function(data){ console.log(data); setTimeout(fetch_messages(),50000); }
});
};
还有后端
do
{
$messages = $this->mentor_model->query_messages($this->project_id,$this->viewer, $this->last_message_id);
if($messages)
break;
usleep(25000);
}
while(empty($messages));
echo json_encode($messages);
exit;
这一切都有效,但如果 apache 没有响应我在合理时间内转到另一个页面或其他内容的其他请求,我将无法正常工作。我的机器上有其他 Web 应用程序,它们在轮询时可以正常工作,但是 Web 应用程序本身不会在合理的时间内响应其他请求,而且只有当我在使用此脚本的页面上时才会发生这种情况。作为说明,我还通过访问 localhost 上使用 mysql 的另一个 wapp(coining) 来确保 mysql 没有在这里给出问题,并且它响应良好。
阿帕奇的交易是什么?是否有一些设置或我必须改变的东西。它应该能够处理这个罚款,因为它只是我测试。
【问题讨论】:
-
有人吗?我试过同时更换后端和前端,似乎只要后端脚本在一段时间内执行一些循环,服务器就不会响应我在同一域上的其他 http 请求
标签: php mysql ajax apache long-polling