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
Lepaskan: 2024-12-06 17:38:12
asal
925 orang telah melayarinya

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
Salin selepas log masuk
  1. Tukar nilai berangka ke tahap yang lebih tinggi, seperti 250 atau 500:
xdebug.max_nesting_level = 250
Salin selepas log masuk
  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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan