2011-03-30 123 views
2

我遇到一个奇怪的现象的请求的突然终止的影响。PHP:由*致命*错误

我的应用程序日志中大量跟踪日志的一个文件。 (我不知道如何,我使用我的框架记录器,可以检查这个虽然)

问题是,当一个应用程序被终止时致命错误(只有致命)[例如 - “致命错误:致电一个成员函数someFunction()一个非对象“],我最终没有日志,甚至应该有我的脚本的执行期间记录的要早得多日志。

(是的,我想刷新记录,这并没有帮助。它看起来像一个致命错误,应用程序的终止,不知何故取消写在应用的早期点进行文件。

?任何想法发生的事情在这里

谢谢

回答

0

显然,帕斯卡提到的致命错误的病死率,的记录mecanisms不是100%致命。下面

让我有甚至致命错误我的日志:

function correctShutdown() 
{ 
    logger->flush(); 
} 

register_shutdown_function('correctShutdown'); 
3

一个致命的错误是......呃...... 致命:停止脚本的执行,这将不会做任何事情,应该已经完成。


在你的情况,我想你的日志框架记录到内存 - 这个内存日志只写入文件时请求的处理完成。
一些测井mecanisms做到这一点,以避免响应的产生期间写入文件几次,在不同的点(这意味着保持锁定该文件,以避免并发问题;或开闭-重启-reclosing-。 ..它)

当您发生致命错误时,应该在响应生成结束时执行的正常操作不会被调用 - 并且因此,内存日志不会写入文件。

现在,肯定知道的唯一的办法是看看你的框架;-)

+0

感谢您对日志机制的解释。这正是Yii所做的,这是造成这种情况的根本原因。 – shealtiel 2011-03-30 23:03:47