2016-06-29 61 views
1

我正在玩弄使用ini_set('ignore_user_abort', true/false);来允许或禁止PHP脚本在服务器上继续运行,即使客户端已经离开(即远离页面导航)。当我将其设置为false时,如果用户导航,脚本会立即停止执行。在脚本结束之前是否有任何方法来运行函数?PHP - 页面中止时运行函数

如果用户导航,我基本上要优雅地关闭几件事情,并将记录插入数据库。

+0

导航离开和'放弃'是不一样的,如果脚本完成,并且用户导航离开,而不是在脚本运行时离开。 PHP是服务器端,通常脚本都是在用户看到页面之前完成的。 –

+0

脚本启动后页面加载ajax,它就像一个5分钟的脚本,使用TRUE它会继续运行,即使用户关闭标签(测试) – Crizly

+0

以及ajax,这是不同的,原始问题的细节将**真的**帮助 –

回答

2

ignore_user_abort设置为true,然后使用connection_aborted()来检查用户是否中止。一个可能的地方检查可能是shutdown callback

+0

我不认为这将工作,因为在用户中止后,服务器也会中止,您的代码将无法运行。可能最好的做法是在决定是否清理并退出或继续处理之前检查'connection_aborted()'。似乎没有办法为中止事件注册回调函数。 (编辑)看到了你的回复 - 没关系。 –

+0

@JuanTomas不,在'ignore_user_abort'设置为'true'时,服务器不应该在客户端执行时中止。 – Schlaus

+0

好的,它在你的编辑。 'register_shutdown_function()来'。 +1 –