리소스 집약적 인 스크립트를 작성하는 데 약 30 분이 걸립니다. 그것의 실행으로 점차적으로 RAM을 소모합니다. 일단 그것이 끝나면 그것은 대략 300mb를 소비했다. 이 스크립트를 여러 번 실행해야 문제가 발생합니다. 램 사용률이 100 %에 도달하고 스크립트가 멈 추면 스크립트를 다시 실행하기를 원할 때마다 서버를 다시 시작해야합니다.스크립트 완료 후 PHP가 메모리를 해제하도록하는 방법
어떻게 강제로 PHP 나 MySQL에서 메모리를 해제 할 수 있습니까? PHP 버전 5.4.29 Centos VPS 2GB RAM PHP 스크립트의 최대 메모리는 512MB로 설정됩니다.
스크립트가 많은 양의 SQL 쿼리를 만듭니다. 1000 년대에 있어야합니다. 또한 5 개의 다른 API를 50 번 호출합니다. 그것은 db 테이블에서 50 행을 선택하고 API를 호출하여 업데이트합니다.
가비지 수집을 사용합니다. var_dump (gc_enabled()); 반환 사실
total used free shared buffers cached
Mem: 2048 1522 525 0 0 182
-/+ buffers/cache: 1339 708
Swap: 128 0 128
쉘을 통해 PHP 스크립트를 실행하고 있습니까? 그렇다면 스크립트 종료 후 남은 프로세스를 확인하십시오. PHP는 지속적으로 실행되는 프로세스가 아니므로 스크립트가 종료 된 후에도 메모리에서 PHP를 찾을 수 없습니다. –
처음에는 wget을 사용하여 실행했지만 지금은 브라우저를 통해 실행하고 있습니다. 스크립트가 끝난 후에는 메모리에 있지 않습니다. mysql은 4 % 램을 사용하고있는 것처럼 보이고 메모리를 사용하여 볼 수있는 것이 전부다. 그 램을 사용하는 어떤 과정이있는 것 같지 않습니다. 방금 누락되었습니다. –
"그냥 누락되었습니다"를 정의하십시오. 메모리가 공개되지 않는다고 생각하는 이유는 무엇입니까? (http://www.linuxatemyram.com/을 참조하십시오) – duskwuff