有这种情况:
假设用户想要关闭计算机,有没有办法在PHP中检测到这一点?所以用户转到开始>关机。
如果没有,是否有一种简单的方法可以确保脚本没有问题? (就像同一个对象的两个查询之间的关闭一样?)
答案 0 :(得分:3)
register_shutdown_function()似乎是您正在寻找的那个。但是,如果操作系统杀死脚本,则在完全执行关闭代码之前,您无法在脚本中执行任何操作。
如果没有,是否有一种简单的方法可以确保脚本没有问题? (就像同一个对象的两个查询之间的关闭一样?)
交易,但他们只确保数据没有损坏,而不是真正写入数据。
我的建议:使用专用系统。
答案 1 :(得分:0)
Windows在用户关闭计算机时向应用程序发送事件。但是,用户仍然可以强制关闭并忽略任何请求阻止关闭的应用程序:
用户强行关闭的能力
在Windows XP中,用于阻止的UI 应用程序允许用户 取消关机或终止 阻止申请。如果随后 应用程序也阻止关闭, 系统为每个显示相同的UI 阻止申请。这是 令许多用户感到沮丧,谁,什么时候 关闭,“只是想要”他们的 电脑要关掉。
Windows Vista将解决此问题 允许用户终止 阻止应用程序并关闭 “有力。”在强行关机中, Windows将发送应用程序 WM_QUERYENDSESSION用 ENDSESSION_CRITICAL标志。如果 应用程序响应FALSE,Windows 将继续关闭而不是 取消它,并将发送 应用程序WM_ENDSESSION。如果 应用程序超时响应 WM_QUERYENDSESSION或WM_ENDSESSION, Windows将终止它。
来源:http://msdn.microsoft.com/en-us/library/ms700677(v=vs.85).aspx
考虑到这一点,即使您收听了这些事件,也不能依赖于能够阻止关机。如果他们在尝试进行数据插入时关闭,您将无法执行任何操作。
答案 2 :(得分:0)
假设用户想要关闭计算机,有没有办法在PHP中检测到这一点?所以用户转到开始>关机。
Windows API允许进程注册在执行某些操作时发送给它们的事件。这些消息是针对您正在寻找的案例发送的。
但是应用程序必须能够接收这些消息并及时对它们做出反应。因此,如果您的脚本一直处于忙碌状态,则无法从技术上做出反应。
您可以使用像WinBinder这样的专业库来接近WINAPI,尤其是lowlevel functions PHP W32api可能是另一个可以查看的地方。
您可以在许多网站和Microsoft主页上找到Windows消息(MSDN)。