亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

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

2024-05-04 23:18:23
字體:
來源:轉載
供稿:網友
函數嵌套,這個名字有點糾結,也許不太好理解。一個比較常見的函數嵌套特例:遞歸函數,即函數自己嵌套自己。 一直以為在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的函數嵌套是以棧的形式實現的。對于每個函數都會分配一段內存來存儲函數局部的內容。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人深夜直播免费观看| 亚洲国模精品一区| 97超级碰在线看视频免费在线看| 91午夜在线播放| 91免费视频网站| 亚洲一级片在线看| www.日韩欧美| 日韩一区二区久久久| 国产精品视频大全| 欧美老妇交乱视频| 91精品视频免费观看| 91豆花精品一区| 亚州成人av在线| 日韩av男人的天堂| 狠狠躁夜夜躁人人躁婷婷91| 狠狠色香婷婷久久亚洲精品| 亚洲成人激情小说| 成人a免费视频| 久久久久国产一区二区三区| 国产日韩欧美影视| 538国产精品一区二区免费视频| 中文一区二区视频| 国产有码一区二区| 久久久久日韩精品久久久男男| 国产一区二区三区在线观看视频| 成人黄色免费网站在线观看| 亚洲精品在线观看www| 久久久久久999| 美日韩精品视频免费看| 亚洲国产免费av| 欧美电影在线免费观看网站| 国产成人精品视| 日韩成人网免费视频| 国产精品网站入口| 日韩精品免费综合视频在线播放| 一区三区二区视频| 国产丝袜精品视频| 91精品久久久久久久久久另类| 国产精品美女www| 国产三级精品网站| 在线观看视频99| 日韩中文理论片| 黄色成人av在线| 国产不卡在线观看| 欧美成人一区在线| 91亚洲精品久久久久久久久久久久| 中文国产亚洲喷潮| 一个人www欧美| 久久久女人电视剧免费播放下载| 国产精品com| 69视频在线播放| 国产精品久久久久国产a级| 中文字幕成人在线| 国产91在线视频| 国产精品爱久久久久久久| 久久久这里只有精品视频| 日韩极品精品视频免费观看| 日韩在线视频免费观看高清中文| 亚洲精品久久久久久久久久久| 一区二区亚洲欧洲国产日韩| 午夜欧美不卡精品aaaaa| 久久久久久亚洲精品| 日韩欧美国产成人| 国产一区二区三区在线播放免费观看| 久久精品视频一| 91精品久久久久久久| 欧美日韩国产123| 国产精品成久久久久三级| 午夜精品久久久久久久99黑人| 成人av色在线观看| 亚洲欧美另类自拍| 亚洲性av网站| 欧美日韩国产综合视频在线观看中文| 国产精品视频一| 国产91精品高潮白浆喷水| 亚洲视频专区在线| 亚洲精品国产suv| 国产成人精品优优av| 91深夜福利视频| 亚洲视频在线观看免费| 日韩美女毛茸茸| 欧美视频13p| 91精品国产综合久久久久久久久| 亚洲精品福利在线观看| 日韩中文字幕视频在线观看| 国产欧美日韩视频| 亚洲视频一区二区三区| 搡老女人一区二区三区视频tv| 亚洲男人天堂手机在线| 激情成人中文字幕| 欧美一级大片在线免费观看| 九九热99久久久国产盗摄| 狠狠久久五月精品中文字幕| 久久久久久久久综合| 亚洲国模精品私拍| 欧美夫妻性视频| 亚洲美女在线看| 伊人久久综合97精品| 久久久国产精品亚洲一区| 亚洲精品福利视频| 欧美日韩国产丝袜另类| 国产欧美日韩最新| 裸体女人亚洲精品一区| 欧美精品成人91久久久久久久| 欧洲日韩成人av| 91国产视频在线| 欧美激情a∨在线视频播放| 欧美另类精品xxxx孕妇| 国产精品欧美在线| 欧美猛交免费看| 国产成人97精品免费看片| 色悠久久久久综合先锋影音下载| 亚洲视频欧美视频| 日韩精品在线免费播放| 九九久久综合网站| 久久久久久av| 亚洲久久久久久久久久| 久久久www成人免费精品| 成人综合网网址| 久久在线免费视频| 欧美高清视频在线播放| 国产精品女人久久久久久| 国产精品99久久久久久www| 亚洲精品一区二区久| 日本中文字幕久久看| 9.1国产丝袜在线观看| 国产欧美一区二区三区视频| 国产精品久久久久影院日本| 亚洲国产99精品国自产| 国产精品免费一区豆花| 97在线观看视频| 亚洲午夜激情免费视频| 国产精品日韩在线观看| 亚洲免费视频网站| 国产福利视频一区| 日韩av大片免费看| 亚洲成人性视频| 欧美成人亚洲成人日韩成人| 亚洲日韩中文字幕在线播放| 亚洲一区二区三区毛片| 91精品国产综合久久香蕉最新版| 日韩欧美在线一区| 久久精品国产亚洲精品2020| 成人激情视频小说免费下载| 久久久久久久久电影| 日韩久久精品电影| 久久久久久有精品国产| 亚州欧美日韩中文视频| 国产精品视频一区国模私拍| 精品人伦一区二区三区蜜桃免费| 久久精品中文字幕免费mv| 国产成人精品免高潮在线观看| 91精品国产综合久久久久久蜜臀| 中文字幕亚洲一区| 欧美久久精品午夜青青大伊人| 亚洲人成自拍网站| 国内揄拍国内精品| 欧美成人精品h版在线观看| 国产精品国产自产拍高清av水多| 91精品综合久久久久久五月天| 亚洲欧美制服综合另类| 精品亚洲精品福利线在观看| 亚洲天堂第二页| 亚洲www永久成人夜色|