1

可能重复:
检测在 PHP 中关闭的浏览器连接

有时我必须使用这样的东西:

set_time_limit(0);

// User is uploading some large data
// ...

// Done uploading, from now on processing must be finished, no matter what
ignore_user_abort(true);

// Process the uploaded data...
while (reading the data) {
    // ...
}

问题是,在某些情况下,我需要知道用户何时取消/关闭浏览器窗口(而我仍在处理数据),以便我可以进行一些数据库同步/清理

我读到了register_shutdown_function,但似乎不是要走的路,我需要一个可靠的指标来告诉用户已经离开,而不仅仅是关闭通知,即。

// Process the uploaded data...
while (reading the data) {
    if (user_closed_window == true) {
        CleanUp();
        break;
    }
}
4

1 回答 1

0

这似乎用 PHP 做不到。但我认为你可以这样做:

在某种程度上,您不会提交您的操作,您只需执行操作,例如将其保存在缓冲区中。接下来,您检查用户是否取消/关闭了窗口。这可以通过 AJAX 完成,您通过 XHTTP 请求启动操作并向用户显示另一个页面(可能带有取消按钮)。我相信您可以检测到用户是否通过 JS+AJAX 关闭了窗口。如果您的操作已经结束并且用户没有关闭窗口/取消操作,那么您提交更改。如果没有,您只需丢弃。

如果您的操作很大,您可以将其分批并检查用户是否在作业之间取消/关闭。

我认为这是在 PHP 中执行此操作的可行方法。希望能帮助到你。

于 2012-10-27T03:13:14.923 回答