2014-04-03 44 views
0

我有一个PHP应用程序,并希望在请求结束时调用特定的函数(此函数将信息写入日志文件)。实际上,我希望这个函数被最后调用,不管代码采用什么路线,也不管之前调用了哪些函数。在请求结束前调用一个特定的函数

有什么方法可以知道或了解PHP何时准备好将信息发送回Web服务器?

function req_end() { 
    global $logger; 
    $logger->log("----------------------------------------------", PEAR_LOG_INFO); 
    $logger->log("     Request End     ", PEAR_LOG_INFO); 
    $logger->log("==============================================", PEAR_LOG_INFO); 
    $logger->log("", PEAR_LOG_INFO); 
} 
register_shutdown_function('req_end'); 

如果我打电话req_end在我的index.php文件的末尾,然后将其写入日志,如果不是,它是不是在所有调用。 谢谢 Crouz

回答

0

我认为你正在寻找这个register_shutdown_function()

它每当脚本完成运行的功能,即使是同一个exit()

这是从文档复制一个例子:

<?php 
function shutdown() 
{ 
    // This is our shutdown function, in 
    // here we can do any last operations 
    // before the script is complete. 

    echo 'Script executed with success', PHP_EOL; 
} 

register_shutdown_function('shutdown'); 
?> 
+0

感谢您的回答。我知道这个函数,但认为它不是正确的,因为尽管我用函数的名称调用它来写入日志,但没有任何反应,日志没有写入。所以基本上,出于某种原因,它不适合我。 – Crouzilles

+0

但是你的函数运行吗?如果是这样,你应该改变你的问题,因为你的问题涉及到写入日志文件,而不是在脚本结束时触发函数。顺便说一句,你可以显示你的代码来写这个日志文件,我相信你只是把路径错误或一些小错误,例如尝试使用绝对路径。 – aleation

+0

如果我手动调用该函数,则该函数运行,但如果使用register_shutdown_function调用,则该函数不会运行。我甚至写了另一个函数来简单地回显一些东西,然后用register_shutdown_function注册它,但它也不会被调用。我已经读过,这个功能可以在php配置文件中关闭,但我没有线索寻找什么,所以我必须做一些搜索。 – Crouzilles

0

好的,我发现了什么是错的。 这里详细描述问题:Write to file with register_shutdown_function

我会尝试在这篇文章中的补救措施,如果没有,我将不得不手动调用函数自己。

关注 Crouz

+0

的确,通过使用上面提供的帖子中描述的技术,一切正常。我以为我会生气一会儿。 – Crouzilles

相关问题