防止apache Web服务器处理停止(通过浏览器)请求

时间:2014-06-26 11:20:58

标签: php apache browser httprequest

最近我在php中编写了一个导入脚本,它将从远程服务器导入一些批量数据。

从浏览器

我启动导入操作,一切正常。但有时候远程服务器需要一些时间来响应,所以我使用浏览器的“停止”按钮停止了请求。

但似乎我的apache仍在处理请求。

当相应的请求停止时,有没有办法停止apache进程。?

2 个答案:

答案 0 :(得分:2)

我不认为这是可能的。当您在浏览器中按停止时,您只是停止侦听/处理来自服务器的响应。如果服务器在发送响应之前正忙于处理,则按stop不会向服务器发送任何更多信息,因此它将继续处理直到完成,然后尝试回复。

请记住,HTTP是无状态的。你发出请求,等待回应,这就是它的全部内容。在您想要的行为中,您需要在处理/提供响应时向同一进程发出另一个请求,但不遵循该模式。

我认为你可以实现这一目标的唯一方法是实现另一种方法,该方法将采用一些可用于定位和终止长时间运行进程的参数。当然,这将是一个新的单独请求。

答案 1 :(得分:1)

尝试在php中使用 ignore_user_abort() 功能。

试试此代码

<?php
ignore_user_abort(false);
set_time_limit(0);

echo 'Testing connection handling in PHP';

while(1) {
    if(connection_status() != CONNECTION_NORMAL)  {
        break;
    }

    sleep(10);
}

?>

更多参考请查看此http://www.php.net/manual/en/function.ignore-user-abort.php