찾다
백엔드 개발PHP 튜토리얼PHP가 대량의 mysql data_php 팁을 쿼리하여 발생하는 메모리 부족 문제에 대한 솔루션

이 기사의 예에서는 PHP가 대량의 MySQL 데이터를 쿼리할 때 발생하는 메모리 부족 문제에 대한 솔루션을 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

1. 질문

PHP를 사용하여 대량의 MySQL 데이터를 쿼리할 때 프로그램이 아직 실행되지 않고 경고 팝업이 나타납니다.
치명적인 오류: 허용된 메모리 크기 100663296바이트가 소진되었습니다(103바이트 할당 시도)
오류 메시지: PHP가 할당한 100M 메모리가 이미 사용되었습니다.

2. 해결책:

가장 간단한 해결책은 실행 파일의 헤드에

을 추가하는 것입니다.
ini_set('memory_limit','256M'); 

PHP에서 사용하는 메모리 공간을 늘리려면 메모리를 256M 이상으로 늘리세요
하지만 다음에 더 많은 데이터를 읽으려면 어떻게 해야 할까요? 계속해서 데이터를 늘릴 수 없어서 PHP가 서버의 메모리를 잡아먹게 됩니다.

다음은 함수입니다:

php에서 사용하는 메모리 양을 가져오려면 memory_get_usage() 메서드를 사용하세요. 읽은 데이터 항목의 수가 증가함에 따라 PHP에서 사용하는 메모리도 단계적으로 증가하는 것으로 나타났습니다.
PHP가 mysql을 쿼리할 때의 데이터가 메모리에 저장되어 있나요? 몇 번 검색해본 결과 이것이 실제로 의미하는 바임을 알았습니다.
mysql의 C API 함수에는 mysql_use_result() 및 mysql_store_result()가 포함됩니다
mysql_store_result()는 mysqlServer에서 클라이언트로 결과 세트를 읽는 반면, mysql_use_result()는 결과 세트의 메타 정보만 읽습니다.

1. PHP의 mysql_query는 mysql_store_result()를 호출하여 자동으로 결과 세트를 얻고 캐시합니다
2. PHP의 또 다른 함수인 mysql_unbuffered_query()는 mysql_use_result()를 호출합니다. 한편, 이는 대규모 결과 세트를 처리할 때 상당한 메모리를 절약합니다. 반면, 전체 SQL 문이 실행될 때까지 기다리지 않고 첫 번째 행을 가져온 직후 결과 집합을 작업할 수 있습니다.

그래서 많은 양의 데이터를 읽을 때는 mysql_query() 대신 mysql_unbuffered_query()를 사용할 수 있습니다. 테스트해본 결과 정말 그렇습니다. 그리고 모든 데이터를 가져온 후에도 메모리가 1MB 이내로 유지되고 늘어나지 않았습니다.
mysql_unbuffered_query()는 SQL 쿼리를 MySQL로 보내지만, mysql_query()처럼 결과 집합을 자동으로 가져오고 캐시하지는 않습니다. 한편으로 이는 매우 큰 결과 세트를 처리할 때 상당한 메모리를 절약합니다. 반면, 전체 SQL 문이 실행될 때까지 기다리지 않고 첫 번째 행을 가져온 직후 결과 집합을 작업할 수 있습니다. 여러 데이터베이스 연결을 사용하는 경우 선택적 매개변수 link_identifier를 지정해야 합니다.
mysql_unbuffered_query()의 이점에는 비용이 듭니다. mysql_num_rows() 및 mysql_data_seek()는 mysql_unbuffered_query()가 반환한 결과 집합 위에 사용할 수 없습니다. 또한, 새로운 SQL 쿼리를 MySQL에 보내기 전에 캐시되지 않은 SQL 쿼리에 의해 생성된 모든 결과 행을 가져와야 합니다.
따라서 비즈니스 요구에 따라 적절하게 기능을 선택해야 합니다

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 응용 프로그램을 더 빨리 만드는 방법PHP 응용 프로그램을 더 빨리 만드는 방법May 12, 2025 am 12:12 AM

TomakePhPapplicationSfaster, followthesesteps : 1) useopCodeCaching likeOpcachetOrpectipiledScriptBecode.2) MinimizedAtabaseQueriesByUsingQueryCachingandEfficientIndexing.3) leveragephp7 assistorBetterCodeeficiession.4) 구현 전략적 지시

PHP 성능 최적화 점검표 : 지금 속도를 향상시킵니다PHP 성능 최적화 점검표 : 지금 속도를 향상시킵니다May 12, 2025 am 12:07 AM

toImprovePhPapplicationSpeed, followthesesteps : 1) enableOpCodeCachingWithApcuTeCeScripteXecutionTime.2) 구현 구현

PHP 의존성 주입 : 코드 테스트 가능성을 향상시킵니다PHP 의존성 주입 : 코드 테스트 가능성을 향상시킵니다May 12, 2025 am 12:03 AM

의존성 주입 (DI)은 명시 적으로 전이적 종속성에 의해 PHP 코드의 테스트 가능성을 크게 향상시킵니다. 1) DI 디퍼 커플 링 클래스 및 특정 구현은 테스트 및 유지 보수를보다 유연하게 만듭니다. 2) 세 가지 유형 중에서, 생성자는 상태를 일관성있게 유지하기 위해 명시 적 표현 의존성을 주입합니다. 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하여 코드 품질 및 개발 효율성을 향상시킵니다.

PHP 성능 최적화 : 데이터베이스 쿼리 최적화PHP 성능 최적화 : 데이터베이스 쿼리 최적화May 12, 2025 am 12:02 AM

DatabaseQuesyOptimizationInphPinVolvesVesstoigiestoInsperferferferferformance.1) SelectOnlyNecessaryColumnstoredAtatatransfer.2) useinDexingTeSpeedUpdatarretieval.3) ubstractOrerEresultSoffRequeries.4) UtilizePreDstatements Offeffi

간단한 가이드 : PHP 스크립트와 함께 이메일 보내기간단한 가이드 : PHP 스크립트와 함께 이메일 보내기May 12, 2025 am 12:02 AM

phpisusedforendingemailsduetoitsbuitsbuitsbuit-inmail () functionandsupportivelibraries lifephpmailerandswiftmailer.1) usethemail () functionforbasicemails, butithaslimitations.2) EmployPhpmailerforAdvancedFeatirehtMailsAndAtachments.3))

PHP 성능 : 병목 현상 식별 및 수정PHP 성능 : 병목 현상 식별 및 수정May 11, 2025 am 12:13 AM

PHP 성능 병목 현상은 다음 단계를 통해 해결할 수 있습니다. 1) 성능 분석을 위해 Xdebug 또는 Blackfire를 사용하여 문제를 찾으십시오. 2) 데이터베이스 쿼리 최적화 및 APCU와 같은 캐시 사용; 3) Array_Filter와 같은 효율적인 기능을 사용하여 배열 작업을 최적화합니다. 4) 바이트 코드 캐시에 대한 OpCache 구성; 5) HTTP 요청을 줄이고 사진 최적화와 같은 프론트 엔드 최적화; 6) 지속적으로 모니터링하고 성능을 최적화합니다. 이러한 방법을 통해 PHP 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.

PHP의 종속성 주입 : 빠른 요약PHP의 종속성 주입 : 빠른 요약May 11, 2025 am 12:09 AM

종속성 주사 (di) inphpisadesignpattern thatmanages 및 enpleducesclassdelencies, 향상 codemodularity, trestability 및 maintainability .itallowspassingDepporsingDikedAbaseConnectionStoclassesAssparameters, 촉진 이용성.

PHP 성능 향상 : 캐싱 전략 및 기술PHP 성능 향상 : 캐싱 전략 및 기술May 11, 2025 am 12:08 AM

cachingimprovesphpperferferfermanceStoringResultsOfcomputationSorqueriesforquickRetrieval, retingServerloadandenhancancing responsetimestimes : 1) opcodecaching, opcodecaching, whitescompiledphps scriptsinmorytoskipcompileation; 2) dataCachingUsingmemmc

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기