退出时停止脚本执行


Stopping script mid execution on exit

在用户操作上,我通过AJAX调用运行后端系统脚本,该脚本在完成之前不输出。问题是,用户很容易通过启动脚本然后离开页面来浪费资源。目标是在退出时跳出while循环。

首先,我让它在启动时向缓存中添加一个文件,并在每次迭代时检查它。这可以正常工作,因为如果我通过另一个AJAX调用更改文件值,它将退出。

所以我的问题是,当你离开页面时,我如何跳出这个循环?

我唯一的猜测是做一个JS的onunload AJAX调用来改变缓存文件,但这是一个很差而且非常不可靠的方法,原因很明显。由于

//编辑//

所以我给connection_aborted一个ignore_user_abort。这是一个非常简化的代码版本。

ignore_user_abort(true);
set_time_limit(0);
$handle=opendir($dir);
if($handle)
{
    while(false!==($file=readdir($handle))&&!connection_aborted())
    {
       sleep(1);
       unlink($dir."/".$file);
    }
}

所以即使在我离开页面后,文件仍然会从文件夹中删除。我的目标是跳出这个循环,并在你离开页面时停止所有断开链接。

您可以检查connection_aborted()

在用户操作上,我通过AJAX运行后端系统脚本调用,该调用在完成之前不输出。问题是a用户很容易通过启动脚本然后离开来浪费资源该页面。目标是在退出时跳出while循环。

你应该检查一下:

  • http://php.net/manual/en/function.ignore-user-abort.php
  • http://php.net/manual/en/function.connection-aborted.php

听起来他们可以解决你的问题。