문제

변수 사용량을 최소한으로 유지하는 습관이 있습니다.그래서 다음과 같은 이점이 있는지 궁금합니다. 라코 디스

이제 내가 맞다면 $queryunset로 재 할당하여 관련된 메모리를 해제해야하므로 예제 1이 더 효율적이어야합니다.그러나 관련 메모리를 해제하는 메서드 (MySQLi_Result::free())가 있습니다. 이것이 동일한가요?

결과와 관련된 메모리를 해제하기 위해 ::free()를 호출하지 않고 변수를 다시 할당하여 unset를 호출하면 동일한 작업을 수행합니까?이런 종류의 일을 기록하는 방법을 모르겠습니다. 누군가 아이디어가 있습니까?

도움이 되었습니까?

해결책

매뉴얼 은 여전히free()를 사용하여 메모리를 해제합니다.그 이유는 free()가 PHP가 아닌 MySQL 에서 메모리를 해제하기 때문이라고 생각합니다.PHP는 MySQL에 대해 가비지 수집을 수행 할 수 없으므로 free()를 호출해야합니다.

다른 팁

예제 1은 MySQL 결과에서 $ query 변수를 분리 합니다.MySQL 결과는 여전히 메모리에 존재하며 가비지 콜렉션이 발생할 때까지 계속 존재하며 메모리를 낭비합니다.

예제 2는 MySQL 결과를 즉시 해제 하여 사용한 리소스를 해제합니다.

그러나 PHP 페이지는 일반적으로 작은 결과 집합으로 수명이 짧기 때문에 절약되는 메모리는 사소합니다.오랫동안 실행되는 페이지에서 많은 결과를 메모리에 장기간 남겨 두지 않는 한 속도 저하를 느끼지 못할 것입니다.

브라이언, PHP는 MySQL 결과를 가비지 수집 할수 있으며 즉시 발생하지 않습니다. 결과는 MySQL 서버가 아닌 PHP의 메모리 풀에 있습니다.

(버퍼되지 않은 쿼리를 사용할 때 메모리의 위치는 약간 다르지만 언급 할 가치가 없을 정도로 PHP에서는 거의 사용되지 않습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top