2011-06-28 130 views
1

我知道我可以使用connection_aborted()来明确检查浏览器是否关闭,但我必须检查离散点,并且浏览器可能会在我的检查之间关闭。在PHP中检测浏览器关机

是否有例外或我可以捕捉到的东西(我找不到)。我有一些流程可能会运行很长时间,如果有人关闭浏览器,从而中止流程,我只想记录发生了这样的事情。

+0

这是不可能的。通过'window.onunload',你可以让浏览器发送一个关于窗口被关闭的AJAX通知,但这将是一个完全独立的请求。除了connection_aborted()和window.unload之外,你无法做任何事情来捕获浏览器的关闭事件。 –

+0

我曾经想过ignore-user-abort,但如果用户放弃了页面,我真的不需要该过程继续。我只想记录该进程中止。 –

回答

1

由于HTTP是无状态协议,因此无法确定浏览器是否关闭。检查连接终止是否告诉您(通常)用户在加载页面期间是否失去连接或中止。您只能使用JavaScript检查是否关闭浏览器客户端。

1

否。浏览器不必告诉服务器它即将关闭连接。你可以尝试用JavaScript来模拟它,但即使这样也不容易出错。

+0

Web服务器知道中止脚本。我想我只想知道这一点,并知道该过程已经开始但没有完成,即使它是由浏览器关闭以外的其他问题引起的。 –