有时我必须使用以下内容:
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
,但似乎不是要走的路,我需要一个可靠的指示器来告诉用户已经离开,而不仅仅是关机通知,即/ p>
// Process the uploaded data...
while (reading the data) {
if (user_closed_window == true) {
CleanUp();
break;
}
}
答案 0 :(得分:0)
这似乎与PHP无关。但我认为你可以这样做:
在某种程度上,您不提交您的操作,您只需将操作保存在缓冲区中即可。接下来,检查用户是否取消/关闭了窗口。这可以通过AJAX完成,您可以通过XHTTP请求启动操作并向用户显示另一个页面(可能带有取消按钮)。我相信你可以通过JS + AJAX检测用户是否关闭了窗口。如果您的操作已结束且用户未关闭窗口/取消操作,则您提交更改。如果没有,你只需丢弃。
如果您的操作很庞大,您可以批量分割,并检查用户是否已在作业之间取消/关闭。
我认为这是在PHP中实现这一点的可行方法。 希望它有所帮助。