PHP에서 대용량 JSON 데이터 파일(25MB)을 처리 중입니다.
이제 파일을 가져와 문자열 길이를 확인할 수 있지만 echo
문자열을 출력할 수는 없지만 24479798을 얻습니다.
에 echo strlen()
之后,脚本的其余部分崩溃了,我没有得到进一步的输出,包括 echo "Made it to the Bottom";
왜 json_decode
회사에 갈 수 없나요? 이것은 스크립트 메모리 문제입니까, 아니면 JSON 데이터의 문자 인코딩 문제입니까? 나는 붙어있다.
<?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 ?>
대용량 파일을 가져오려는 것을 고려하면 브라우저/서버에 필요한 것보다 스크립트를 실행하는 데 시간이 더 걸리고 완료되기 전에 시간 초과됩니다. 이와 같은 스크립트는 시간 초과를 없애기 위해 명령줄이나 cron을 통해 실행해야 합니다. json 파일을 로드하고 처리하는 데 충분한 메모리가 있는지 확인하기 위해 스크립트 시작 부분에
ini_set('memory_limit', '512M');
(또는 필요한 경우 더 높은 값)을 추가하여 메모리를 늘릴 수도 있습니다.