需要知道用户何时取消,而不仅仅是关机通知

时间:2012-10-27 02:58:36

标签: php notifications shutdown

  

可能重复:
  Detect browser connection closed in 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) {
    // ...
}

问题是,有些情况下我需要知道用户取消/关闭浏览器窗口的时间(,当我还在处理数据时),以便我可以做一些db sync / cleanup

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

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

1 个答案:

答案 0 :(得分:0)

这似乎与PHP无关。但我认为你可以这样做:

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

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

我认为这是在PHP中实现这一点的可行方法。 希望它有所帮助。