最近我在php中编写了一个导入脚本,它将从远程服务器导入一些批量数据。
从浏览器我启动导入操作,一切正常。但有时候远程服务器需要一些时间来响应,所以我使用浏览器的“停止”按钮停止了请求。
但似乎我的apache仍在处理请求。
当相应的请求停止时,有没有办法停止apache进程。?
答案 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