php 조회 mysql 대량 데이터 로 인 한 메모리 부족 해결 방법

본 고 는 php 조회 mysql 의 대량 데이터 가 메모리 부족 을 초래 하 는 해결 방법 을 실례 로 분석 하 였 다.모두 에 게 참고 하도록 공유 하 다.구체 적 인 분석 은 다음 과 같다.
문제
php 를 사용 하여 my sql 빅 데 이 터 를 조회 할 때 프로그램 이 실행 되 지 않 았 습 니 다.경고 건 너 뛰 기:
Fatal error:  Allowed memory size of 100663296 bytes exhausted (tried to allocate 103 bytes)
오류 알림:phop 에서 분 배 된 100 M 메모리 가 사용 되 었 습 니 다.
2.해결 방법:
가장 간단 한 해결 방법 은 실행 파일 의 머리 에 추가 하 는 것 입 니 다.

ini_set('memory_limit','256M'); 
메모 리 를 256 M 이상으로 늘 리 면 phop 에서 사용 하 는 메모리 공간 을 늘 릴 수 있 습 니 다.
하지만 다음 에 더 많은 데 이 터 를 읽 으 려 면 어떻게 해 야 합 니까?한 번 에 늘 어 나 서 서버 의 메모리 가 모두 phop 에 의 해 먹 혀 서 는 안 됩 니 다.
여기에 함 수 를 소개 합 니 다.
memory 사용get_usage()방법 은 phop 에서 사용 하 는 메모리 양 을 얻 습 니 다.읽 기 데이터 항목 수가 증가 함 에 따라 phop 에서 사용 하 는 메모리 가 점점 증가 하고 있 음 을 발견 하 였 습 니 다.
설마 php 가 mysql 을 조회 할 때의 데 이 터 는 메모리 에 존재 합 니까?검색 해 보 니 과연 그런 뜻 이 었 다.
mysql 의 C API 함 수 는 mysqluse_result()와 my sqlstore_result()
mysql_store_result()는 결과 집합 을 my sql Server 에서 클 라 이언 트 로 읽 고 my sqluse_result()는 결과 집의 메타 정보 만 읽 었 습 니 다.
1,php 의 mysqlquery 호출 은 my sqlstore_result(),결과 집합 자동 가 져 오기 및 캐 시
2.phop 의 또 다른 함수 my sqlunbuffered_query()는 호출 된 my sqluse_result(),한편,이것 은 매우 큰 결과 집합 을 처리 할 때 상당 한 메모 리 를 절약 할 수 있다.다른 한편,첫 줄 을 가 져 온 후에 결과 집합 을 즉시 조작 할 수 있 으 며 전체 SQL 문장 이 실 행 될 때 까지 기다 리 지 않 아 도 된다.
그래서 우 리 는 대량의 데 이 터 를 읽 을 때 my sql 을 사용 할 수 있 습 니 다.unbuffered_query()대신 my sqlquery()。테스트 를 통 해 확실히 그렇다.그리고 상당히 기 똥 차 서 모든 데이터 메모 리 를 1MB 이내 로 유지 하고 증가 한 적 이 없다.
mysql_unbuffered_query()는 MySQL 에 SQL 조회 query 를 보 냈 지만 my sql 같 지 않 습 니 다.query()처럼 결과 집합 을 자동 으로 가 져 오고 캐 시 합 니 다.한편,이것 은 매우 큰 결과 집합 을 처리 할 때 굉장 한 메모 리 를 절약 할 수 있다.다른 한편,첫 줄 을 가 져 온 후에 결과 집합 을 즉시 조작 할 수 있 으 며 전체 SQL 문장 이 실 행 될 때 까지 기다 리 지 않 아 도 된다.여러 개의 데이터 베 이 스 를 연결 할 때 선택 가능 한 매개 변수 link 를 지정 해 야 합 니 다.identifier。
mysql_unbuffered_query()의 장점 은 대가 가 있 습 니 다:my sqlunbuffered_query()되 돌아 오 는 결과 집합 에 my sql 을 사용 할 수 없습니다.num_rows()와 my sqldata_seek()。또한 MySQL 에 새로운 SQL 조 회 를 보 내기 전에 캐 시 되 지 않 은 SQL 조회 에서 발생 하 는 결과 줄 을 모두 추출 해 야 합 니 다.
그래서 반드시 자신의 업무 수요 와 결합 하여 적당 한 선택 함 수 를 선택해 야 한다.
본 논문 에서 말 한 것 이 여러분 의 phop 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기