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

2013-08-31 13:56:40 +08:00
 Nintendov
闲的没事编了两个死循环,最后发现,代码一没有卡死而是回显了一些就停止了,而代码二卡死了,为什么......
<?php
function todie(){
if(1){
echo '*</br>';
todie();
}
}
todie();
?>
以上是代码一
<?php
while (1){

echo "*</br>";
}

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

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

在开启xdebug时有最大100的限制,否则就是内存的限制
Nintendov
2013-08-31 14:50:15 +08:00
@wzxjohn
@clww
@oldcai
@jybox
@jybox
@bixuehujin 看你们的回复加上查资料大致也明白了,感谢帮助

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/80847

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX