Rumah > Artikel > pembangunan bahagian belakang > Limpahan Timbunan PHP
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-olokMulakan 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.
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;
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 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!