我正在对一个需要很长时间才能运行的PHP脚本进行AJAX调用。现在,假设它需要20分钟才能运行。还假设我刷新或关闭然后打开了启动呼叫的网页。我的问题是:
我的PHP脚本是否停止运行?
如果它一直在运行,我怎样才能在刷新后强制回复页面?
感谢。
的 的 ** * ** * ** * 的** * * 更新 * ** * ** * ** < EM> * ** *
有人问为什么我的脚本需要很长时间。我认为没有解释以下内容是我的错:
一个。此脚本仅供站点管理员使用,并且不适用于普通公众
湾这个脚本将执行一些繁重的工作,例如数据操作和数据库相关的东西,并且需要很长时间才能运行
℃。我正在使用AJAX,所以我仍然可以返回到主页面,一个微调器显示脚本正在运行,而脚本实际上在后端运行,而回调函数将删除微调器并显示一个消息成功/失败状态。
答案 0 :(得分:2)
不会它会停止运行。
您应该使用cron作业来运行一个需要20分钟的脚本。
不要忘记为该页面设置至少20分钟的时间限制!
答案 1 :(得分:2)
- 我的PHP脚本是否停止运行?
是的,如果浏览器断开连接(将在刷新/关闭时),PHP将停止执行。您可以使用ignore_user_abort(true)
来阻止这种情况,但我认为这不是您想要的最佳选择。
- 如果它一直在运行,我怎样才能在刷新后强制回复页面?
不,因为连接已经消失,没有任何回复发送回复。在ajax调用它时,将更长的进程调用为后台进程更合适,并立即返回响应,使后台进程正常工作。您可以使用常规的ajax调用来查询进程是否完成(例如在完成时更新数据库)。
来自docs:
但是,当远程客户端断开连接时,脚本的默认行为将被中止。