天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP中的函數(shù)嵌套層數(shù)限制分析

函數(shù)嵌套,這個名字有點糾結(jié),也許不太好理解。一個比較常見的函數(shù)嵌套特例:遞歸函數(shù),即函數(shù)自己嵌套自己。 一直以為在php中不能有太多的函數(shù)嵌套,這是因為在以前某些時候不小心用到了遞歸,在遞歸的深度達到100時, 即函數(shù)嵌套的層數(shù)達到100時,程序會報一個 Fatal error。如下示例:
復(fù)制代碼 代碼如下:
function rt() {
static $i;
echo $i++, '<br />';
rt();
}
rt();
die();

在我的win7 + php5.3的環(huán)境下報錯如下: Fatal error:Maximum function nesting level of ‘100′ reached, aborting!

一直以為是php本身的限制,直到某一天切換到liunx環(huán)境下以命令行的模式運行,發(fā)現(xiàn),程序限入了死循環(huán)。 不同的環(huán)境下有不同的結(jié)果,為什么呢?好吧,我們直接在源碼中查找報錯信息,發(fā)現(xiàn)沒有相關(guān)內(nèi)容,直接debug整個執(zhí)行過程,也沒有在win下的報錯。 什么原因?再次切換到win下,再次查找,發(fā)現(xiàn)在xdebug中看到了報錯信息。在xdebug.c文件的1242行開始:
復(fù)制代碼 代碼如下:
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));
}

這表示什么?之前的函數(shù)嵌套的層數(shù)限制是xdebug擴展加上的,為什么會有這個限制了呢?在xdebug中,xdebug中會記錄每次函數(shù)調(diào)用, 包括嵌套的函數(shù)調(diào)用,函數(shù)調(diào)用中的內(nèi)存,時間等值,這些值在分析程序性能時有大用。如果沒有這個限制,當嵌套的層數(shù)太多,機器會內(nèi)存耗盡。 如果這是一臺生產(chǎn)環(huán)境的服務(wù)器,那么就會有部分服務(wù)不可用,當然生產(chǎn)環(huán)境下是不會添加這個擴展的。但是在多人共用的開發(fā)服務(wù)器上就可能有這個擴展, 如果因為一個開發(fā)人員的程序錯誤導(dǎo)致機器不可用,從而使所有的開發(fā)人員不能工作,我想這也許是添加限制的原因吧。

如果我們需要把這個限制的層數(shù)加大,怎么辦呢?改源碼,重新編譯xdebug擴展?不需要,在xdebug的配置項中有一項叫做xdebug.max_nesting_level, 默認情況下,在php.ini中這個配置項是被注釋了的,去掉注釋,將這個值成你所需要的值,200?不夠,那500吧,但是這個值還是不要太大, 如果遞歸太多,對程序的性能有很大的影響,此時,以棧的形式實現(xiàn)遞歸或者用循環(huán)替換遞歸會是一個更好的方案, 如:斐波那契數(shù)列(Fibonacci)的實現(xiàn),用循環(huán)來實現(xiàn)會更快。

結(jié)論:php本身的函數(shù)嵌套是沒有限制的,如果說有限制,也是內(nèi)存的限制。這是因為php的函數(shù)嵌套是以棧的形式實現(xiàn)的。對于每個函數(shù)都會分配一段內(nèi)存來存儲函數(shù)局部的內(nèi)容。

php技術(shù)PHP中的函數(shù)嵌套層數(shù)限制分析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品日韩欧美一区二区三区 | 羞羞麻豆国产精品1区2区3区 | 恋夜影院安卓免费列表uc | 亚洲成人黄色片 | 深喉吞精日本 | 成人午夜剧场 | 欧美怡红院视频一区二区三区 | 亚洲日本欧美日韩高观看 | 国产午夜三级一区二区三 | 国产精品无码视频一区二区 | 国产精品久久久精品a级小说 | 快播看黄片 | 日本又黄又裸一级大黄裸片 | 美女露100%全身无遮挡 | 欧美亚洲高清国产 | 四虎影视国产精品亚洲精品 | 欧美午夜精品一区区电影 | 日本三级黄色大片 | 亚洲三级在线中文字幕 | 中国少妇内射XXXHD免费 | 在线自拍亚洲视频欧美 | 在线中文字幕 | 久久精品电影网 | 被六个男人躁到一夜同性 | 国产人妻人伦精品1国产 | 精品国产在天天线在线麻豆 | 最近中文字幕无吗免费高清 | 日本少妇内射视频播放舔 | 久久亚洲精品成人 | 中文字幕人成人乱码亚洲AV | 麻豆国产成人AV在线 | aaa级黄影片| 果冻传媒AV精品一区 | 亚洲人成网站在线观看90影院 | 国产蜜臀AV在线一区视频 | 亚洲伊人久久综合影院2021 | 狠狠色欧美亚洲狠狠色www | 日韩视频中文字幕精品偷拍 | 少妇久久久久久被弄高潮 | 超碰免费碰免费视频 | 麻豆久久婷婷五月国产 |