Apakah Had Atas pada Panjang Rentetan dalam PHP?
Pertanyaan:
Bolehkah anda memberi penerangan tentang had kapasiti penyimpanan rentetan dalam PHP? Saya telah cuba mengukurnya tetapi tidak pasti sama ada memori sistem saya (2GB) mencukupi untuk ujian. Adakah terdapat penutup yang telah ditetapkan? Apakah tindakan yang berlaku apabila rentetan melebihi ambang ini – penggabungan atau ralat?
Respons:
Menurut dokumentasi PHP.net, sekatan panjang rentetan telah dihapuskan dalam PHP 7.0.0 untuk binaan 64-bit. Untuk binaan 32-bit dan versi terdahulu, rentetan boleh mencapai saiz maksimum 2GB (2147483647 bait).
Dalam PHP 5.x, rentetan dihadkan kepada 231-1 bait kerana kod dalaman menjejaki panjangnya dalam 32-bit yang ditandatangani integer.
Pertimbangan Tambahan:
Anda boleh memuatkan keseluruhan kandungan fail menggunakan fungsi seperti file_get_contents(). Walau bagaimanapun, peruntukan memori keseluruhan skrip PHP untuk semua pembolehubah mengehadkan panjang pembolehubah rentetan individu.
Arahan Had Memori:
Arahan memory_limit dalam fail konfigurasi php.ini menetapkan ini had. Lalainya ialah 128MB dalam PHP 5.2 dan 8MB dalam versi terdahulu.
Jika memory_limit tidak ditetapkan dalam php.ini, ia lalai kepada nilai terkumpul dalam binari PHP, yang boleh diubah suai dengan menyusun semula PHP dengan lalai tersuai .
Menetapkan had_memori kepada -1 dalam php.ini melumpuhkan pemeriksaan dan membenarkan skrip anda untuk gunakan seberapa banyak memori yang diperuntukkan oleh OS (masih tertakluk kepada kekangan praktikal dan khusus sistem).
Contoh Ujian:
Kod berikut menunjukkan cara menguji penggunaan memori dan peruntukan rentetan had:
<code class="php">// Limit memory usage to 1MB ini_set('memory_limit', 1024*1024); // Basic operation uses about 768KB printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 255*1024); echo "Allocated string of 255KB\n"; // All 1MB of memory has been allocated printf("memory: %d\n", memory_get_usage(true)); // Exceeding the limit causes a fatal error $str = str_repeat('a', 256*1024); echo "Allocated string of 256KB\n"; printf("memory: %d\n", memory_get_usage(true));</code>
Atas ialah kandungan terperinci Seberapa Besar String dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!