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

PHP中的函數嵌套層數限制分析

函數嵌套,這個名字有點糾結,也許不太好理解。一個比較常見的函數嵌套特例:遞歸函數,即函數自己嵌套自己。 一直以為在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的函數嵌套是以棧的形式實現的。對于每個函數都會分配一段內存來存儲函數局部的內容。

php技術PHP中的函數嵌套層數限制分析,轉載需保留來源!

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

主站蜘蛛池模板: 国产69TV精品久久久久99 | 高清国产在线观看 | 亚洲青青草 | 国产精品亚洲精品爽爽 | 国产在线成人一区二区三区 | a在线观看免费视频 | 51精品国产AV无码久久久 | 欧美丰满白嫩bbxx | 亚洲一卡二卡三卡四卡无卡麻豆 | 天天躁日日躁狠狠躁中文字幕老牛 | 欧美一区二区三区久久综 | 国产1769一七六九视频在线 | 热の中文 AV天堂 | 97无码人妻精品1国产精东影业 | 野花香在线观看免费观看大全动漫 | 2021自产拍在线观看视频 | 最新亚洲一区二区三区四区 | 善良的小峓子2在钱免费中文字 | 视频一区二区中文字幕 | 国精产品一区二区三区有限公司 | 午夜在线播放免费人成无 | 精品96在线观看影院 | 在公交车上被JB草坏了被轮J了 | 欧美性喷潮xxxx | 二次元美女扒开内裤喷水 | 摸董事长的裤裆恋老小说 | 国产精品毛片AV久久97 | 2017天天拍天天拍香蕉视频 | 爽爽影院免费观看 | 入禽太深免费观看 | se01国产短视频在线观看 | 一区二区不卡在线视频 | 97精品国产高清在线看入口 | 迅雷成人下载 | 久久视频在线视频观看精品15 | 内射无码AV-区二区在线观看 | 麻婆豆腐传媒视频免费 | a级精品九九九大片免费看 A级韩国乱理伦片在线观看 | 精品淑女少妇AV久久免费 | 男生J桶进女人P又色又爽又黄 | 好好的曰com久久 |