読者です 読者をやめる 読者になる 読者になる

halka-tech

技術的なことを書きます

phpは再帰呼び出しをしすぎるとダメらしい

php
<?php
function sai($i){
	if($i>100) return;
	echo "$i\n";
	$i++;
	sai($i);
}
sai(0);
?>

なんとなく書いて、実行して見たんですが再帰呼び出しを100回以上やるとダメらしいです。

Fatal error: Maximum function nesting level of '100' reached, aborting! in D:\pr
oject\saiki.php on line 6

Call Stack:
0.0008 56912 1. {main}() D:\project\saiki.php:0
0.0008 56912 2. sai() D:\project\saiki.php:8
0.0010 57088 3. sai() D:\project\saiki.php:6
0.0010 57368 4. sai() D:\project\saiki.php:6
0.0013 57648 5. sai() D:\project\saiki.php:6
0.0014 57928 6. sai() D:\project\saiki.php:6
0.0015 58208 7. sai() D:\project\saiki.php:6
0.0016 58488 8. sai() D:\project\saiki.php:6
0.0017 58768 9. sai() D:\project\saiki.php:6
0.0017 59048 10. sai() D:\project\saiki.php:6
0.0018 59328 11. sai() D:\project\saiki.php:6
0.0019 59608 12. sai() D:\project\saiki.php:6
0.0020 59888 13. sai() D:\project\saiki.php:6
0.0021 60168 14. sai() D:\project\saiki.php:6
0.0021 60448 15. sai() D:\project\saiki.php:6
0.0022 60728 16. sai() D:\project\saiki.php:6
0.0023 61008 17. sai() D:\project\saiki.php:6
0.0024 61288 18. sai() D:\project\saiki.php:6
0.0025 61568 19. sai() D:\project\saiki.php:6
0.0026 61848 20. sai() D:\project\saiki.php:6
0.0026 62128 21. sai() D:\project\saiki.php:6
0.0027 62408 22. sai() D:\project\saiki.php:6
0.0028 63752 23. sai() D:\project\saiki.php:6
0.0029 64032 24. sai() D:\project\saiki.php:6
0.0030 64312 25. sai() D:\project\saiki.php:6
0.0031 64592 26. sai() D:\project\saiki.php:6
0.0031 64872 27. sai() D:\project\saiki.php:6
0.0032 65152 28. sai() D:\project\saiki.php:6
0.0033 65432 29. sai() D:\project\saiki.php:6
0.0034 65712 30. sai() D:\project\saiki.php:6
0.0035 65992 31. sai() D:\project\saiki.php:6
0.0036 66272 32. sai() D:\project\saiki.php:6
0.0036 66552 33. sai() D:\project\saiki.php:6
0.0037 66832 34. sai() D:\project\saiki.php:6
0.0038 67112 35. sai() D:\project\saiki.php:6
0.0039 67392 36. sai() D:\project\saiki.php:6
0.0040 67672 37. sai() D:\project\saiki.php:6
0.0040 67952 38. sai() D:\project\saiki.php:6
0.0041 68232 39. sai() D:\project\saiki.php:6
0.0042 68512 40. sai() D:\project\saiki.php:6
0.0043 68792 41. sai() D:\project\saiki.php:6
0.0044 69072 42. sai() D:\project\saiki.php:6
0.0045 69352 43. sai() D:\project\saiki.php:6
0.0046 70152 44. sai() D:\project\saiki.php:6
0.0047 70968 45. sai() D:\project\saiki.php:6
0.0047 71256 46. sai() D:\project\saiki.php:6
0.0048 71536 47. sai() D:\project\saiki.php:6
0.0049 71816 48. sai() D:\project\saiki.php:6
0.0050 72096 49. sai() D:\project\saiki.php:6
0.0051 72376 50. sai() D:\project\saiki.php:6
0.0052 72656 51. sai() D:\project\saiki.php:6
0.0052 72936 52. sai() D:\project\saiki.php:6
0.0053 73216 53. sai() D:\project\saiki.php:6
0.0054 73496 54. sai() D:\project\saiki.php:6
0.0055 73776 55. sai() D:\project\saiki.php:6
0.0056 74056 56. sai() D:\project\saiki.php:6
0.0056 74336 57. sai() D:\project\saiki.php:6
0.0057 74616 58. sai() D:\project\saiki.php:6
0.0058 74896 59. sai() D:\project\saiki.php:6
0.0059 75176 60. sai() D:\project\saiki.php:6
0.0060 75456 61. sai() D:\project\saiki.php:6
0.0061 75736 62. sai() D:\project\saiki.php:6
0.0061 76016 63. sai() D:\project\saiki.php:6
0.0062 76296 64. sai() D:\project\saiki.php:6
0.0063 76576 65. sai() D:\project\saiki.php:6
0.0064 76856 66. sai() D:\project\saiki.php:6
0.0065 77136 67. sai() D:\project\saiki.php:6
0.0065 77416 68. sai() D:\project\saiki.php:6
0.0066 77696 69. sai() D:\project\saiki.php:6
0.0067 77976 70. sai() D:\project\saiki.php:6
0.0068 78256 71. sai() D:\project\saiki.php:6
0.0069 78536 72. sai() D:\project\saiki.php:6
0.0070 78816 73. sai() D:\project\saiki.php:6
0.0070 79096 74. sai() D:\project\saiki.php:6
0.0071 79376 75. sai() D:\project\saiki.php:6
0.0072 79656 76. sai() D:\project\saiki.php:6
0.0073 79936 77. sai() D:\project\saiki.php:6
0.0074 80216 78. sai() D:\project\saiki.php:6
0.0075 80496 79. sai() D:\project\saiki.php:6
0.0075 80776 80. sai() D:\project\saiki.php:6
0.0076 81056 81. sai() D:\project\saiki.php:6
0.0077 81336 82. sai() D:\project\saiki.php:6
0.0078 81616 83. sai() D:\project\saiki.php:6
0.0079 81896 84. sai() D:\project\saiki.php:6
0.0082 82176 85. sai() D:\project\saiki.php:6
0.0083 82456 86. sai() D:\project\saiki.php:6
0.0083 82736 87. sai() D:\project\saiki.php:6
0.0084 84064 88. sai() D:\project\saiki.php:6
0.0085 84344 89. sai() D:\project\saiki.php:6
0.0086 85696 90. sai() D:\project\saiki.php:6
0.0087 85976 91. sai() D:\project\saiki.php:6
0.0088 86256 92. sai() D:\project\saiki.php:6
0.0088 86536 93. sai() D:\project\saiki.php:6
0.0089 86816 94. sai() D:\project\saiki.php:6
0.0090 87096 95. sai() D:\project\saiki.php:6
0.0091 87376 96. sai() D:\project\saiki.php:6
0.0092 87656 97. sai() D:\project\saiki.php:6
0.0093 87936 98. sai() D:\project\saiki.php:6
0.0093 88216 99. sai() D:\project\saiki.php:6

知りませんでした。
普通phpで書くようなウェッブ系のスクリプトでは100回も再帰呼び出しすることはあまりないと思いますけどね。
万が一暴走したときのためなんでしょうね。