2016-08-23 2 views
0

PHP의 json_encode()를 사용하여 JSON에 큰 배열을 인코딩하는 데 도움이 필요합니다. 배열은 로컬 데이터베이스의 배열입니다. JS를 사용하여 JSON을 구문 분석합니다. 그러나 JSON 형식으로 배열을 처리하는 PHP 스크립트는 데이터 집합이 너무 큰 경우 중지됩니다. (즉, 100,000 개의 결과). 내 memory_limit를 -1로 시도했지만 여전히 도움이되지 않습니다. PHP의 json_encode()를 사용하여 큰 배열을 인코딩 할 수 있습니까?JSON_ENCODE는 큰 배열을 인코딩 할 수 없습니다.

제 질문이 너무 혼란 스럽다면 알려주십시오.

감사합니다.

+0

PHP에서'JSON_ENCODE '문제는 큰 따옴표와 이스케이프 시퀀스를 추가하여 가져올 JSON의 실제 크기를 늘리는 경향이 있습니다. 왜 클라이언트 측에서 처리 할 수 ​​없습니까? –

+0

@DavidR 이론적으로 다른 사람들이 JSON 형식을 사용할 것이므로 JSON 형식이 필요합니다. –

+0

@PaulCrovella 그냥 공백 페이지. 페이지가 방금 중단되었습니다. –

답변

3

배열의 각 행이 json_encode으로 성공적으로 인코딩 된 경우 각 행을 인코딩하고 배열 구조를 직접 반향 출력함으로써이 사실을 활용하십시오. 중첩이 더 복잡한 경우

$prefix = ''; 
echo '['; 
foreach($rows as $row) { 
    echo $prefix, json_encode($row); 
    $prefix = ','; 
} 
echo ']'; 

입니다

후 좀 더 자세한 기술을 채택 할 필요가 있지만이 문제가 발생하면이 기술은 저를 저장했다.

0

허용 가능한 응답은 상기 등록한이

$prefix = ''; 
echo '['; 
foreach($rows as $row) { 
echo $prefix, json_encode($row); $prefix = ','; 
} 
echo ']'; 

이다.

그러나 데이터 집합이 너무 크면 작동하지 않을 수도 있습니다.

가능한 해결 방법은 쿼리 제한입니다. SELECT *를 사용하는 대신. 필요한 행을 선택하십시오.하지만 제 경우에는 쿼리를 절대 제어 할 수 없습니다. 그래서이 해결책은 나를 위해 일하지 않을 것입니다.

마지막 하나는 계속 증가하는 데이터 세트를 따라 잡기 위해 서버의 메모리 또는 서버 자체를 업그레이드하는 것입니다.

도움 주셔서 감사합니다.

관련 문제