我有php_mod和apache服务器。 如果我从浏览器启动脚本,它将一直持续到执行完成(即使我关闭浏览器)
我该如何停止这个过程?
答案 0 :(得分:4)
通常,如果您正在发送输出,则不会发生这种情况:如果Web服务器检测到断开连接,则PHP进程也会停止(这就是为什么我们有register_shutdown_function
之类的函数来使确定已完成某些事情(当然,你会遇到致命的错误)。)
但是,由于HTTP是无状态的,因此网络服务器检测断开连接的唯一时间点是尝试发送内容时(另请参阅ignore_user_abort
处的备注(默认为false,这是您想要的) ))。根据请求的上下文,一个可行的kludge可以在大循环中向用户发送非显示的数据,用HTML可以发送空白和flush
。这可能最终会出现在任何缓冲区中(PHP,服务器,网络中的其他位置),因此检测仍然不是100%,但这是不可避免的。一个理智的时间限制,以避免无限循环,只有提高实际需要它们的请求的限制是你能做的最好的。
答案 1 :(得分:2)
检查脚本中的任何位置是否设置了ignore_user_abort(true)。或者如果在.htaccess中设置了php_value ignore_user_abort指令
答案 2 :(得分:-1)
在您的脚本中使用(如果已经过了一段时间)
die();
答案 3 :(得分:-2)
关闭浏览器不会终止正在运行的进程。如果要停止后台进程,则必须终止该进程。
如果您使用的是Windows,则可以使用Apache服务管理器重启apache或使用任务管理器将其终止。