V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Nintendov
V2EX  ›  问与答

我闲的编了两个死循环,,最后一个成功卡死了,一个没有。。。菜鸟求解答。。。

  •  
  •   Nintendov · 2013-08-31 13:56:40 +08:00 · 2724 次点击
    这是一个创建于 3911 天前的主题,其中的信息可能已经有所发展或是发生改变。
    闲的没事编了两个死循环,最后发现,代码一没有卡死而是回显了一些就停止了,而代码二卡死了,为什么......
    <?php
    function todie(){
    if(1){
    echo '*</br>';
    todie();
    }
    }
    todie();
    ?>
    以上是代码一
    <?php
    while (1){

    echo "*</br>";
    }

    ?>
    这是代码二
    7 条回复    1970-01-01 08:00:00 +08:00
    wzxjohn
        1
    wzxjohn  
       2013-08-31 14:09:08 +08:00   ❤️ 1
    应该是你的设置问题。我这里两个都能卡死。
    clww
        2
    clww  
       2013-08-31 14:10:04 +08:00   ❤️ 1
    nesting的函数调用应该有个最大深度吧
    oldcai
        3
    oldcai  
       2013-08-31 14:13:45 +08:00   ❤️ 1
    应该是第一个堆栈溢出了,就停了。
    开显示错误、警告,应该会看到。
    jybox
        4
    jybox  
       2013-08-31 14:20:00 +08:00   ❤️ 1
    不知道你说的卡死是浏览器卡死还是php卡死。

    代码一因为递归会消耗内存,应该会更快达到PHP的内存限制(默认128M), 而第二段应该要输出很多很多东西才会达到PHP默认30秒的时间限制。
    jybox
        5
    jybox  
       2013-08-31 14:20:51 +08:00   ❤️ 1
    @clww 我实验了一下,递归27W层,仍可以继续运行,不过我是在cli测试的。
    bixuehujin
        6
    bixuehujin  
       2013-08-31 14:23:01 +08:00   ❤️ 1
    @jybox
    @clww

    在开启xdebug时有最大100的限制,否则就是内存的限制
    Nintendov
        7
    Nintendov  
    OP
       2013-08-31 14:50:15 +08:00
    @wzxjohn
    @clww
    @oldcai
    @jybox
    @jybox
    @bixuehujin 看你们的回复加上查资料大致也明白了,感谢帮助
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 03:26 · PVG 11:26 · LAX 20:26 · JFK 23:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.