xdebug.max_nesting_level
类型: integer(整型), 默认值: 100
用来控制对无限递归的保护机制。 此项的值限制了在脚本中断之前,运行嵌套执行的函数的最大数目(即最大递归次数,超过这个数,php脚本将中断执行)。
限制递归
如果应用程序使用递归 —— 例如,计算斐波纳契数列 —— 并且终端环境不正确,应用程序会运行很长一段时间后才用尽内存或超时。您可以设定 xdebug.max_nesting_level
参数来限定递归深度。例如,xdebug.max_nesting_level = 50
将把递归深度限定为 50 次嵌套调用,然后将强制终止应用程序。下面演示一下,在启用 Xdebug 的状态下运行下列代码:
清单 2. 限制递归
1 2 3 4 5 6 7 |
|
函数 deep_end()
将逐行进行到最底部。Xdebug 将在 49 次函数调用后介入并得到图 2(顺便说一句,main()
的初始调用用于启动程序计数作为第 1 次调用)。
图 2. 如果调用堆栈超出限制,Xdebug 将终止执行
如果应用程序大量使用递归隔离并解决较大的问题,则需要把深度相应地设定得 “更低”。否则,将 xdebug.max_nesting_level
设为较小的值,这样可以更快速地捕捉失控的函数调用序列。
PHP 中当函数调用层数超过限制的时候就会出现 Maximum function nesting level of ‘100’ reached,默认情况下函数嵌套不能超过 100 层,我们可以通过修改配置文件来解决此问题:修改 php.ini
添加 xdebug.max_nesting_level=600。
下载仅供下载体验和测试学习,不得商用和正当使用。
下载体验