在用户操作上,我通过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
听起来他们可以解决你的问题。