Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Fungsi Rekursif PHP Saya Mencecah Had Kedalaman Rekursif, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Fungsi Rekursif PHP Saya Mencecah Had Kedalaman Rekursif, dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-12-06 17:38:12911semak imbas

Why Does My PHP Recursive Function Hit the Recursion Depth Limit, and How Can I Fix It?

Had Kedalaman Rekursif Melebihi dalam PHP: Penjelasan Komprehensif

Apabila bekerja dengan fungsi rekursif dalam PHP, khusus untuk tugas seperti merangkak kandungan HTML, anda mungkin menghadapi ralat "Ralat maut: Tahap sarang fungsi maksimum '100' dicapai, menggugurkan kandungan!". Ralat ini menunjukkan bahawa fungsi anda memanggil dirinya sendiri terlalu banyak kali, melebihi had sarang lalai yang dikenakan oleh PHP.

Untuk menangani isu ini, ramai yang akan segera meningkatkan tahap sarang maksimum. Walau bagaimanapun, sebelum berbuat demikian, adalah penting untuk memahami punca ralat.

Punca Punca Kemungkinan:

  1. Rekursi Tak Terhingga: Pastikan fungsi rekursif anda mempunyai syarat penamatan yang betul untuk mengelakkannya daripada bergelung selama-lamanya.
  2. Sambungan Pihak Ketiga: Zend, IonCube atau xDebug juga boleh mengenakan had bersarang mereka sendiri. Semak sama ada mana-mana sambungan ini dipasang dan ubah suai konfigurasi masing-masing dengan sewajarnya.

Penyelesaian:

Setelah anda menolak gelung tak terhingga atau sambungan pihak ketiga , anda boleh meningkatkan tahap bersarang fungsi maksimum dengan selamat dengan mengedit php.ini anda fail.

  1. Cari fail php.ini pada sistem anda (biasanya dalam /etc/php/7.x/php.ini atau /etc/php.ini).
  2. Cari baris yang berbunyi:
xdebug.max_nesting_level = 100
  1. Tukar nilai berangka ke tahap yang lebih tinggi, seperti 250 atau 500:
xdebug.max_nesting_level = 250
  1. Simpan perubahan anda pada php.ini.
  2. Mulakan semula pelayan PHP anda (cth. Apache atau Nginx) untuk perubahan berkuat kuasa.

Nota: Meningkatkan tahap bersarang akan membolehkan fungsi anda pergi lebih dalam, tetapi ia tidak mengurangkan isu asas yang menyebabkan rekursi. Atasi punca sarang yang berlebihan sebelum membuat pelarasan ini.

Atas ialah kandungan terperinci Mengapa Fungsi Rekursif PHP Saya Mencecah Had Kedalaman Rekursif, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn