Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Limpahan Timbunan PHP

Limpahan Timbunan PHP

WBOY
WBOYasal
2024-08-29 13:05:331176semak imbas

Stack Overflow dalam pengaturcaraan ialah sejenis ralat yang boleh menyebabkan isu serius kepada program kami dan menjadikannya malah berhenti bertindak balas seperti yang dikecualikan. Stack Overflow adalah sama dalam setiap bahasa pengaturcaraan, dan jika kita bercakap tentang PHP mereka juga berkelakuan sama seperti yang diharapkan. Dalam masalah ini, sesetengah program komputer mula mengambil lebih banyak memori daripada ketersediaan sebenar. Dalam bahasa pengaturcaraan, kami mempunyai timbunan panggilan yang bertanggungjawab untuk mengendalikan permintaan dan menyimpannya. Ia tidak lain hanyalah penimbal. Dalam bahagian yang akan datang, kita akan membincangkan ralat limpahan tindanan secara terperinci.

IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks:

Seperti yang kita tahu bahawa ia adalah ralat yang berlaku jadi kami tidak mempunyai sebarang sintaks untuk membuatnya berlaku, ia biasanya berlaku apabila sebahagian daripada program cuba untuk menduduki lebih banyak ruang daripada yang tersedia. Mari lihat penimbalan output untuk mendapatkan ralat maut dalam bahasa pengaturcaraan.

cth. :

1) max_execution_time()

2) tetapkan_had_masa()

3) dsb

Seperti yang anda lihat dalam baris kod di atas, kami boleh menggunakan beberapa fungsi dan menetapkan beberapa nilai untuk mendapatkan ralat maut dalam PHP atau mana-mana bahasa pengaturcaraan. Kita juga boleh keluar daripada masalah ingatan jika kita cuba menggunakan lebih banyak memori daripada yang tersedia. Tetapi tiada sintaks untuk ralat ini kerana ini bukan kaedah atau utiliti; ia boleh berlaku pada bila-bila masa apabila kita cuba menggunakan lebih banyak sumber daripada yang ada. Dalam bahagian yang akan datang, kita akan melihat dengan lebih terperinci ia berfungsi.

Bagaimanakah limpahan tindanan berfungsi dalam PHP?

Seperti yang kita tahu sekarang, limpahan tindanan ialah ralat yang boleh menyebabkan program kami ditamatkan dan berkelakuan tidak diingini. Ini bukan pengecualian, sebaliknya ia adalah ralat dalam PHP. Dalam bahasa pengaturcaraan, kami mempunyai timbunan panggilan yang tidak lain hanyalah penimbal yang bertanggungjawab untuk mengendalikan permintaan. Dalam bahasa pengaturcaraan, kami menentukan saiz pada permulaan pelaksanaan program; mari lihat beberapa faktor yang bertanggungjawab untuk menentukan saiz timbunan panggilan lihat di bawah;

1) bahasa program

2) Seni bina program

3) Terakhir ialah jumlah memori yang tersedia.

Ralat limpahan tindanan memerlukan jumlah yang sangat besar daripada yang tersedia, dan ini mengakibatkan ralat dan boleh menyebabkan sistem juga ranap. kadangkala ia mungkin menuntut semua memori yang tersedia dalam sistem. Ini adalah sebahagian daripada program yang boleh menyebabkan keadaan ini. Ringkasnya, ralat berlaku apabila kami cuba menggunakan lebih banyak memori daripada memori yang diperuntukkan untuk program kami. Kami mungkin mempunyai program tertentu di mana kami cuba memanggil kaedah daripada kaedah; katakan kita mempunyai 4-5 kaedah yang memanggil secara berterusan antara satu sama lain, seperti fungsi A() memanggil fungsi b() ia menghidupkan fungsi panggilan c() diikuti dengan fungsi D() dan seterusnya, tetapi pada akhirnya apabila kita mendapat input yang mungkin menyebabkan fungsi atau gelung kaedah ini dijalankan dalam masa yang tidak terhingga, dan ia akan terus berjalan selepas ini kita mungkin menyedari bahawa ia telah menduduki memori tindanan daripada yang diperuntukkan kepadanya. Apabila kami menggunakan rekursi dalam PHP atau mana-mana bahasa pengaturcaraan, kami boleh menyebabkan limpahan tindanan atau sebarang ralat maut jika fungsi tidak digunakan atau dikendalikan dengan betul, jadi sentiasa disyorkan untuk menggunakan pembolehubah global atau pembolehubah statik untuk mengelakkan gelung tak terhingga dalam rekursi. Untuk mengelakkan ini, kami boleh melakukan ujian sistem dan juga menulis beberapa kes ujian untuk melihatnya.

Kami boleh menghalang jenis ralat maut ini daripada berlaku dalam bahasa pengaturcaraan dengan beberapa langkah berjaga-jaga lihat di bawah;

1) Lakukan ujian sistem

2) Elakkan menggunakan rekursi atau semak dengan ketat

3) Memanggil fungsi antara satu sama lain atau dalam gelung harus dielakkan; kita juga harus menyemak pembolehubah tempatan dan cuba mengoptimumkan kod sebanyak mungkin kerana pembolehubah tempatan juga menduduki ruang dalam sistem. Ia adalah ralat masa jalan yang berlaku apabila atur cara kehabisan memori kerana beberapa peristiwa luar biasa dalam pengaturcaraan.

Mata yang perlu diingat semasa bekerja dengan ralat dalam PHP;

  • Ralat limpahan tindanan berlaku kerana penggunaan memori lebih daripada yang diperuntukkan.
  • Ini boleh dicegah dengan mengoptimumkan kod, cuba menganalisis pembolehubah setempat juga
  • Rekursi harus dianalisis dengan ketat; jika kita menggunakan rekursi, cuba gunakan pembolehubah statik atau global untuk mengelakkannya daripada tersekat dalam gelung tak terhingga.
  • Ini bukan fungsi atau kaedah. Ini adalah ralat yang boleh menyebabkan sistem ranap jika tidak dikendalikan dengan betul.

Contoh

1) Dalam contoh ini, kami cuba menjalankan gelung masa yang tidak terhingga. Ini akan berjalan dalam masa yang tidak terhingga dan boleh menyebabkan ralat limpahan tindanan. Sebaik sahaja tindanan atau ingatan tindanan panggilan akan diduduki, ia akan membawa kepada ralat limpahan tindanan. Di bawah ialah program mudah untuk pemula untuk memahaminya dengan lebih baik lihat di bawah;

Kod:

<?php
print("Demo for stack overflow in php !! ");
while (1){
print("will run infinite time and lead to stack overflow when the stack overblown !!!");
}
?>

Output:

Limpahan Timbunan PHP

Kesimpulan

Limpahan tindanan ialah ralat yang boleh menyebabkan atau membawa kepada ranap sistem. untuk mengelakkan ralat ini, kami boleh mengambil sedikit berhati-hati semasa mengekod dan juga boleh mengoptimumkan kod kami, dsb. Ini ialah ralat masa jalan yang berlaku pada masa jalan sahaja.

Atas ialah kandungan terperinci Limpahan Timbunan PHP. 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
Artikel sebelumnya:Jejak Timbunan PHPArtikel seterusnya:Jejak Timbunan PHP