Saya sedang memproses fail data JSON yang besar (25 mb) dalam PHP.
Kini saya boleh mendapatkan fail dan menyemak panjang rentetannya, walaupun saya tidak dapat echo
mengeluarkan rentetan, saya mendapat 24479798.
di echo strlen()
之后,脚本的其余部分崩溃了,我没有得到进一步的输出,包括 echo "Made it to the Bottom";
Mengapa saya tidak boleh json_decode
bekerja? Adakah ini isu memori skrip atau isu pengekodan aksara dalam data JSON? saya buntu.
<?php error_reporting(E_ALL); ini_set('error_reporting', E_ALL); if($result = file_get_contents("test.json")){ echo "GOT IT"; }else{ echo "NO"; } // This works echo "Got to here"; // This works echo strlen($result); // I get "24479798", which is the file string length var_dump($diffbotResult); // Outputs all the JSON data, so I know I have it and it's proper JSON data $result = json_decode($result, true); echo json_last_error_msg(); // No output print_r($result); // No output echo "Made it to the bottom"; // Does not echo out anything ?>
Memandangkan anda cuba mengimport fail yang besar, skrip mengambil masa lebih lama untuk dijalankan daripada yang diperlukan oleh penyemak imbas/pelayan dan akan tamat masa sebelum selesai. Skrip seperti ini perlu dijalankan dari baris arahan atau melalui cron untuk menghapuskan tamat masa. Anda juga boleh meningkatkan memori dengan menambah
ini_set('memory_limit', '512M');
(atau nilai yang lebih tinggi jika perlu) pada permulaan skrip untuk memastikan ia mempunyai memori yang mencukupi untuk memuatkan dan memproses fail json.