函数嵌套,这个名字有点纠结,也许不太好理解。一个比较常见的函数嵌套特例:递归函数,即函数自己嵌套自己。 一直以为在PHP中不能有太多的函数嵌套,这是因为在以前某些时候不小心用到了递归,在递归的深度达到100时, 即函数嵌套的层数达到100时,程序会报一个 Fatal error。如下示例:
复制代码 代码如下:
function rt() {
static $i;
echo $i++, '<br />';
rt();
}
rt();
die();
在我的win7 + php5.3的环境下报错如下: Fatal error:Maximum function nesting level of ‘100′ reached, aborting!
一直以为是PHP本身的限制,直到某一天切换到liunx环境下以命令行的模式运行,发现,程序限入了死循环。 不同的环境下有不同的结果,为什么呢?好吧,我们直接在源码中查找报错信息,发现没有相关内容,直接debug整个执行过程,也没有在win下的报错。 什么原因?再次切换到win下,再次查找,发现在xdebug中看到了报错信息。在xdebug.c文件的1242行开始:
复制代码 代码如下:
XG(level)++;
if (XG(level) == XG(max_nesting_level)) {
php_error(E_ERROR, "Maximum function nesting level of '%ld' reached,
aborting!", XG(max_nesting_level));
}
这表示什么?之前的函数嵌套的层数限制是xdebug扩展加上的,为什么会有这个限制了呢?在xdebug中,xdebug中会记录每次函数调用, 包括嵌套的函数调用,函数调用中的内存,时间等值,这些值在分析程序性能时有大用。如果没有这个限制,当嵌套的层数太多,机器会内存耗尽。 如果这是一台生产环境的服务器,那么就会有部分服务不可用,当然生产环境下是不会添加这个扩展的。但是在多人共用的开发服务器上就可能有这个扩展, 如果因为一个开发人员的程序错误导致机器不可用,从而使所有的开发人员不能工作,我想这也许是添加限制的原因吧。
如果我们需要把这个限制的层数加大,怎么办呢?改源码,重新编译xdebug扩展?不需要,在xdebug的配置项中有一项叫做xdebug.max_nesting_level, 默认情况下,在php.ini中这个配置项是被注释了的,去掉注释,将这个值成你所需要的值,200?不够,那500吧,但是这个值还是不要太大, 如果递归太多,对程序的性能有很大的影响,此时,以栈的形式实现递归或者用循环替换递归会是一个更好的方案, 如:斐波那契数列(Fibonacci)的实现,用循环来实现会更快。
结论:PHP本身的函数嵌套是没有限制的,如果说有限制,也是内存的限制。这是因为PHP的函数嵌套是以栈的形式实现的。对于每个函数都会分配一段内存来存储函数局部的内容。
相关推荐:
seo站内优化包括什么营销,seo站内优化操作流程 ,ai 玻璃图标
什么是seo运营,什么是seo营销 ,ai绘画沙地
SEO利用:让你的网站快速登顶,获取更多流量与客户!,延边小程序推广平台网站
ChatGPT当前不可用?背后的原因与解决方案全解析,ai propos
SEO查:如何通过精准优化让网站流量飞速增长,吉林推广营销怎么样
SEO优化需要花钱吗?从零起步,如何让SEO成为企业的“隐形财富”,字体如何往ai里面倒
SEO但是,这些常见误区你真的知道吗?,凤岗网站建设开发
为什么做seo的人很少,为了什么做seo ,ai不负你
SEO总计:如何通过SEO优化实现网站流量和排名的飞跃,三元桥网站优化
SEO出超:如何通过精准优化实现网站流量大爆发,营销推广方式联系f火15星
什么是SEO可以自学吗,seo零基础可以自学吗 ,ai1紫
SEO关键词是什么意思?全面解析SEO关键字的核心作用,华为ai音箱 百度ai音箱
为什么做抖音seo,为什么做抖音推广 ,描边ai虚线
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,助您畅享无障碍智能对话体验,ai记录人
SEO对策:提升网站排名与流量的必备策略,SEO入门相机平价学生
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
SEO广告:如何借助SEO提升品牌曝光与销售业绩?,网站推广怎么选择
AI免费生成:释放创造力的秘密武器
SEO场景下的数字营销:如何通过精准优化提升网站流量,陕西融发建设集团网站
“洗稿技巧如何让你的文章脱颖而出,轻松提升内容创作水平!”,台州椒江seo企业排名
企业SEO:如何通过搜索引擎优化提升企业网络竞争力,安阳网站优化布局设计
SEO优化中怎么找关键词:全面解析与实战技巧,ai2002.4.8
从零到一:网站历史的演变与未来趋势,肇庆市国外网站建设平台
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
seo链接有什么用,seo外链是什么意思 ,one ai写作
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
AI写作的崛起-“只能AI写作”背后的巨大潜力,舞狮摄影ai
OpenAI智能诊断医疗-开启精准医疗新纪元,跟侯维静学ai
ChatGPT不能用了?了解这一背后的真相及解决方法,ai恐怖头像
SEO埋词技巧,如何提升网站排名?,贵州营销推广方法
SEO有意:如何通过优化策略提升网站排名与流量,天津政府智慧网站建设
用AI写文章查重率高吗?揭秘AI写作与查重检测的关系
仿写AI:智能时代的创作革命,洛江区移动房网站推广
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
seo稿件是什么意思,seo文章写作要求 ,ai写作未来展望和展望
SEO优化关键技巧:提升网站排名的实战攻略,科大讯飞ai论文写作软件
中外链:打通全球流量的桥梁,提升网站排名与流量的双重保障,行业网站建设思路
SEO项目指的是什么,seo项目指的是什么意思 ,写个ai
ChatGPT中文版下载,开启智能对话新体验,婚纱ai男
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
seo相当于什么职业,seo相当于什么职业类别 ,usatisfy ai
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
seo网赚什么意思,网站seo赚钱 ,ai打不开ai
专业SEO方案助力企业网站流量暴增,精准引流不再是难题,网站建设合同4篇
OpenAI您的信用卡被拒绝了?请尝试用借记卡支付,轻松解决支付问题!,ai cdr缩略图补丁
SEO搜索关键词是什么意思?全方位解析关键词优化的核心要素,lol ai图片
怎么用AI写出令人惊叹的文章?轻松搞定写作难题!
优化整站,让网站飞速增长,打造行业竞争力,广东网站建设与维护
seo要懂些什么软件,seo常用软件 ,ai写作网站网址大全
ChatGPT打不开网页?看完这篇你就懂了!,国内ai写作安卓软件