2011-02-16 65 views
2

我看了看我能找到的消息,但没有找到似乎有帮助的答案。我有一个调用debug_backtrace()的例程,然后循环遍历元素,以我的日志格式输出它们。这在大多数情况下工作正常。PHP - debug_backtrace()崩溃 - 我该怎么办?

在某些调用中,系统只是挂起。假设如下:

$curStack = debug_backtrace(); 
foreach ($curStack as $myStackLevel) { 
    $test = gettype($myStackLevel); 
    // code to write out contents of $myStackLevel 
    // Log that we are getting the next item 
} 
// Log that the foreach is done 

在某些情况下,PHP只死 - 我可以看到日志,它当前处理的项目,但它崩溃就在foreach线(或至少之前,我可以编程看到的contects下一个$ myStackLevel

在这里的一条消息中,我看到了一些关于递归调用和使用序列化,但我不能使用序列化(我使用PDO,并有消息“你不能序列化或反序列化PDO实例”)

有趣的是,如果它崩溃了,PHP错误系统仍然提供堆栈的完整转储k ....(当我尝试使用序列化时,我发现了这一点)。

任何帮助表示赞赏....

感谢,

JustMeToo

+0

您运行的是哪个版本的PHP?如果这是一个实际的PHP错误,升级可能会有所帮助。 – Dave 2011-02-16 23:02:50

+0

我正在运行PHP 5.2.10。我打算去5.3.x,但不能直到其他问题得到解决.... – JustMeToo 2011-02-17 00:48:02

回答

2

你们是不是要输出的object元素的内容是什么?很可能您有一个递归对象图,导致PHP进程溢出堆栈或运行时间过长。