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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.