我在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没有响应我在其他页面或其他合理时间内要求的其他请求,我就无法正常工作。我在机器上有其他网络应用程序,它们在轮询时工作正常,但网络应用程序本身不会在合理的时间内响应其他请求,这只发生在我使用此脚本的页面上时。作为一个注释,我还确保mysql没有在这里通过访问使用mysql的localhost上的另一个wapp(压缩)来解决问题,并且它的响应很好。
什么是apache的交易?是否有一些设置或我需要改变的东西。它应该能够处理这个罚款,因为它只是我测试。
答案 0 :(得分:1)
这不仅仅是资源处理问题。会话的全面使用被阻止,因为有问题的脚本在运行时不允许使用会话数据(因为它正在使用数据)。
在脚本上调用usleep()/ sleep()之前放置在循环中的简单session_write_close()解决了我的问题。
使用完会话数据后将它放在任何地方都可以解决问题。