如何捕捉或阻止退出,死亡

时间:2014-10-22 14:05:36

标签: php quickbooks

我使用QuickBooks for windows。并且Windows应用程序调用我的后端,在某些库脚本中它调用exit或die ...所以我无法捕获响应并需要检测退出运行的位置或在退出之前捕获输出。 例如

try{
    $lib->run();
} catch on exit ($output) {
    log($output);
}

所以也许有人知道它在我启用QuickBooks_WebConnector_Handlers :: HOOK_LOGINSUCCESS钩子时调用exit ...并且调试器显示它不会在钩子上输入我的函数...所以它之前就死了。

3 个答案:

答案 0 :(得分:4)

我是您正在使用的QuickBooks库(https://github.com/consolibyte/quickbooks-php)的作者。

库调用exit()/ die()是有充分理由的 - 因为如果你在调用exit / die之后执行任何操作,那么你将损坏SOAP输出并记录库和打破你的QuickBooks集成。库中内置了许多钩点,专门用于执行各种操作,而不必担心退出或死亡的调用。

根据您所说的内容,您有99.9%的可能性做出了不应该出现在代码中的内容,你的代码中有PHP或SQL错误,你没有看到。

发布您的代码,并告诉我们为什么你认为你需要接听退出/死亡的电话,我可以编辑我的问题以帮助你进一步。

答案 1 :(得分:1)

无法阻止执行exit
提示是编写自己的退出函数,如下例所示:

customExit($output){
    log($output);
    exit;
}

之后你必须搜索结束替换所有exit出现的PHP语言结构,并用customExit($output)函数替换它们

希望有所帮助:)

答案 2 :(得分:1)

在这种情况下,您可以使用此功能:

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

它将在完全退出PHP脚本之前执行回调函数 它也接受混合类型的多个参数