-2

在用户操作中,我通过 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);
    }
}

因此,即使在我离开页面后,文件仍会从文件夹中删除。我的目标是跳出这个循环,如果你离开这个页面,就停止所有的取消链接。

4

2 回答 2

0

你可以检查connection_aborted()

于 2013-01-06T22:45:24.213 回答
0

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

你应该检查一下:

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

于 2013-01-06T22:45:57.287 回答