1. ホーム
  2. recursion

[解決済み] Fatal error.の解決方法 PHPの「Fatal error: Maximum function nesting level of '100' reached, aborting!

2022-02-18 19:14:23

質問

htmlファイル内のすべてのURLを発見し、発見されたURLにリンクされている各htmlコンテンツに対して同じ処理を繰り返す関数を作りました。この関数は再帰的であり、無限に続けることができます。しかし、グローバル変数を設定することによって再帰に制限をかけ、100回再帰した時点で再帰を停止するようにしました。

しかし、phpはこのようなエラーを返します。

致命的なエラーです。関数のネストレベルの最大値 '100' に達しました。 を中止してください。 D:\wwcrawler1}simplehtmldom_1_5}simple_html_dom.php on line 1355

ここで解決策を見つけました。 関数呼び出しのネスト数の上限を増やす しかし、私の場合、これはうまくいきません。

上記のリンク先から回答の一つを引用させていただきました。ぜひご検討ください。

<ブロッククオート

"Zend、IonCube、またはxDebugがインストールされていますか?もしそうなら、おそらくこのエラーはそこから発生しているのでしょう。

数年前にこの問題に遭遇したのですが、結局はPHPではなくZendがその制限を設けていたのです。もちろん、この制限を解除すれば、100回を超える反復処理が可能になりますが、最終的にはメモリの制限にぶつかります。

PHPで関数の最大ネストレベルを上げる方法はありますか?

どのように解決するのですか?

簡単な解決策で解決しました。この行をコメントアウトするだけです。

zend_extension = "d:/wamp/bin/php/php5.3.8/zend_ext/php_xdebug-2.1.2-5.3-vc9.dll

私の php.ini ファイルを作成します。この拡張機能により、スタックに制限されていた 100 ということで、無効化しました。再帰的な機能は予想通り動作するようになりました。