全部发生,
我使用了以下ignore_user_abort。
ignore_user_abort(true); set_time_limit(0); session_start();
但是,当我离开我发出AJAX请求的页面时,脚本会停止吗?
我做错了什么?
在PHP手册中,它说:
PHP不会检测到用户有 中止连接,直到 尝试发送信息 客户端。只需使用回声 声明不保证 信息已发送,请参阅flush()。
似乎建议您可以使用echo,它只会识别用户已断开连接并且会继续?
答案 0 :(得分:1)
PHP将不会检测到......直到有人向客户端发送信息
这听起来像是:当php无法将其缓冲区刷新到客户端时:停止。所以我建议使用ob_start()
来缓冲页面开头的每一个,你也可以用这种方式实现gzip:ob_start('ob_gzhandler')
。
答案 1 :(得分:0)
也许您的服务器有内置超时可以杀死脚本?
您还应该注意,不应在中止的脚本中使用echo
,因为您无处可以发送输出。
答案 2 :(得分:0)
需要考虑的一些事项
您确定用户中止导致问题吗?
您是否检查过日志以查看是否记录了任何错误。?
无论脚本本身如何,您的服务器都会终止脚本吗?
即使是ajax调用吗?我假设它在用户导航时运行。
您可以使用wireshark来观察浏览器和网络服务器之间的流量,以确保您认为实际发生的事情正在发生。
DC