如果用户在AJAX请求结束之前退出浏览器或更改页面会怎样?

2021/01/31 13:11 · jquery ·  · 0评论

我通过ajax调用php脚本来进行一些数据库维护。如果用户关闭页面,点击或单击链接,PHP脚本会完全执行吗?有办法吗?

也许,如果php脚本调用了exec()方法或类似方法,则将依次通过控制台调用脚本:

$ php /var/www/httpdocs/maintenance.php

只要用户代理(浏览器等)已完全发送了请求,服务器便拥有了它所需要的一切,并将完成请求并尝试发送回响应。

实际上,这种“ ping”行为通常用于使服务保持温暖或执行定期维护的类似“心跳”的过程。

这是比赛条件。PHP将在某个时间点(通常是在尝试进行输出时)检测到Apache在面对远程用户已关闭连接的情况大喊大叫。在这一点上您是否想做的一切都取决于代码的结构。

如果要确保在脚本关闭之前完成所有操作,请使用ignore_user_abort(TRUE),在断开连接后使PHP保持运行状态。它仍然受用户max_execution_time限制和其他限制,但不会断开连接,因为您已断开连接。

Web请求到达您的服务器后,用户关闭浏览器还是离开浏览器实际上并不重要。您的服务器仍会响应,但是没有人会监听响应。

因设置,Web服务器,操作系统等而异。

通常,将像往常一样处理请求,并且永远不会读取响应。有时,写操作可能会更早失败,并且在处理过程中请求也会失败。

一旦ajax调用开始,用户就可以自由地做他们想做的任何事情。如果他们关闭页面,他们将不会从进行的ajax调用中获得反馈(如果有的话)。

如果php开始执行,则无论用户关闭窗口还是离开页面,它将继续执行。

php脚本将完成,无论浏览器状态如何。php是在服务器上解析的,它不在乎客户端是否仍处于打开状态。

如果HTTP请求已完成,则可以,即使关闭客户端计算机,PHP脚本也将完全执行。

本文地址:http://jquery.askforanswer.com/ruguoyonghuzaiajaxqingqiujieshuzhiqiantuichuliulanqihuogenggaiyemianhuizenyang.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!