Had Data POST PHP/Apache/AJAX
Apabila cuba menghantar sejumlah besar data (2 juta aksara) melalui POST menggunakan AJAX (jQuery), bahagian PHP gagal untuk mendapatkan semula data dan mengembalikan ralat "Indeks tidak ditentukan". Isu ini tidak berkaitan dengan tetapan post_max_size dalam php.ini, yang cukup tinggi (256M).
Had Menyiasat
Masalahnya terletak pada pelbagai had yang dikenakan oleh pelbagai komponen yang terlibat dalam proses:
-
Apache:
- LimitRequestBody: Mengawal saiz maksimum permintaan POST masuk. Anda harus menyemak log ralat Apache anda untuk menentukan had sebenar, yang biasanya sekitar 2GB secara lalai.
-
PHP:
- post_max_size: Hadkan saiz data POST. Pastikan tetapan ini ditetapkan cukup tinggi dalam php.ini anda (cth., 256M).
- upload_max_filesize: Walaupun tidak berkaitan dengan data POST, ia patut disebut untuk kesempurnaan.
- max_input_time: Mengawal masa maksimum dibenarkan untuk pemprosesan data POST. Tetapkannya kepada nilai yang besar untuk mengelakkan tamat masa (cth., -1).
- max_input_nesting_level: Hadkan kedalaman tatasusunan bersarang dalam data POST. Jika data anda mengandungi tatasusunan bersarang dalam, anda mungkin perlu meningkatkan nilai ini.
- max_execution_time: Tidak mungkin menjadi punca isu.
- memory_limit: Memastikan subproses PHP mempunyai memori yang mencukupi untuk mengendalikan data. Laraskan tetapan ini dengan sewajarnya (cth., 256M).
- max_input_vars: Hadkan bilangan pembolehubah dalam permintaan POST. Jika data anda mengandungi sejumlah besar elemen, anda mungkin perlu meningkatkan nilai ini.
Penyelesaian
Jika Apache's LimitRequestBody ialah dicapai, anda tidak boleh POST data secara langsung kerana ia melebihi had terkumpul. Anda mesti memecahkan data kepada bahagian yang lebih kecil dan menghantarnya dalam berbilang permintaan POST.
Atas ialah kandungan terperinci Mengapa Data AJAX POST Saya Terhad Walaupun Dengan Had PHP yang Tinggi?. 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