1

我正在对需要很长时间才能运行的 PHP 脚本进行 AJAX 调用。现在,假设运行需要 20 分钟。还假设我刷新或关闭然后打开发起呼叫的网页。我的问题是:

  1. 我的 PHP 脚本是否停止运行?

  2. 如果它继续运行,我如何在刷新后强制响应返回页面?

谢谢。

** * ** * ** * ** * *更新* ** * ** * ** * ** *

有些人问为什么我的脚本需要很长时间。我认为我没有解释以下内容是我的错:

一个。此脚本仅对站点管理员可用,对公众不可用

湾。该脚本将执行一些繁重的工作,例如数据操作和数据库相关的东西,并且需要很长时间才能运行

C。我正在使用 AJAX,以便我仍然可以返回主页,并显示一个微调器显示脚本正在运行,而脚本实际上在后端运行,回调函数将删除微调器并显示消息成功/失败状态。

4

2 回答 2

2
  • 我的 PHP 脚本是否停止运行?

是的,如果浏览器断开连接(它将在刷新/关闭时),PHP 将停止执行。您可以使用它ignore_user_abort(true)来防止这种情况,但我认为这不是您想要的最佳选择。

  • 如果它继续运行,我如何在刷新后强制响应返回页面?

不,因为连接消失了,没有什么可以发送回响应。当ajax调用它时,将您的长进程作为后台进程调用会更合适,并立即返回响应,让后台进程继续工作。您可以使用常规 ajax 调用来查询该过程是否完成(例如在完成时更新数据库)。

文档

但是,默认行为是在远程客户端断开连接时中止您的脚本。

于 2013-07-08T10:24:55.157 回答
2

不,它会停止运行。

您应该使用 cron 作业来运行需要 20 分钟的脚本。

不要忘记将该页面的时间限制设置为至少 20 分钟!

于 2013-07-08T10:17:04.873 回答