我尝试从Extbase,TYPO3中的控制器获取带有debug_backtrace()
的堆栈跟踪,但是在512M脚本限制下内存溢出。我当然可以增加这个限制,但为什么需要这么多内存呢?还有另一种方法可以在TYPO3中获得堆栈跟踪吗?
答案 0 :(得分:1)
但为什么需要这么多内存?
这取决于控制器的逻辑。我想到的一件事是Extbase的属性映射器功能。
/*
* $var Model $model
*/
public function showAction(Model $model) {…}
在这种情况下,您很可能将该模型的uid作为url参数给出,但Extbase将解析实际模型。根据您的模型对其他模型的引用数量,属性映射器需要适当的CPU时间和内存。
然而,这只是我现在可以想象的最常见的问题。我敢打赌,你的堆栈跟踪需要这么多内存的原因还有很多。
还有另一种方法可以在TYPO3中获得堆栈跟踪吗?
那么,这取决于你何时以及如何需要它。一般来说,我建议使用xdebug来调试php应用程序,因此你不需要从你提到的函数中获取它的表单中的堆栈跟踪。
如果您需要导出堆栈跟踪,还有xdebug的分析功能,它将生成一个cachegrind兼容文件。该文件可以与KCacheGrind,QCacheGrind一起使用,甚至可以直接在PhpStorm上使用。我想有更多的方法和程序来处理堆栈跟踪,但这些是我经常使用的,并且已被证明是坚如磐石的,你可以避免内存不足。