在用户操作中,我通过 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);
}
}
因此,即使在我离开页面后,文件仍会从文件夹中删除。我的目标是跳出这个循环,如果你离开这个页面,就停止所有的取消链接。