2013-05-08 3 views
0

일부 페이지 (약 30 개 필드)에 큰 쿼리가 있습니다. 메모리 성능을 향상시키기 위해 mysql_free_result를 들었다. 이제 나는 당신에게 물어보고 싶다. 어떻게 mysql_free_result를 올바로 사용할 수 있을까?MYSQL_FREE_RESULT 올바르게 사용하는 방법은 무엇입니까?

// buffered query 

    private function query($queryStr) 
    { 
     $this->querycount++; 
     $starttime = microtime(); 

     $this->queryRes = mysql_query($queryStr, $this->conn); 
     $this->querytime = $this->querytime + (microtime() - $starttime); 

     if ($this->queryRes) 
     { 
      $this->query_log($queryStr,$this->querytime); 
     } 
     else 
     { 
      $this->error("SQL ERROR: " . $queryStr); 
     } 
     return $this->queryRes; 
     $this->free_result($this->queryRes); 
    } 

    // free result 

    public function free_result($result) 
    { 
     mysql_free_result($result); 
    } 

사실 사용하여이는 다음과 같습니다

나는 내 수업에서이 좋아했다? 사실이 아니라면 어떻게 제대로 사용할 수 있습니까?

+2

유지 관리해야하는 이전 코드입니까? 그렇지 않으면 MySQLi 또는 PHP PDO로 마이그레이션하는 것에 대해 생각하기 시작하십시오. – Terence

+1

[mysql_ *'functions] (http://stackoverflow.com/q/12859942/1190388)을 새 코드로 사용하지 마십시오. 더 이상 유지 관리되지 않으며 [공식적으로 권장되지 않습니다] (https://wiki.php.net/rfc/mysql_deprecation). 빨간 상자 보이니? 대신 준비된 문에 대해 알아보고 [tag : PDO] 또는 [tag : MySQLi]를 사용하십시오. – hjpotter92

+0

메소드가 반환 된 후에 mysql_free_result()가 호출되기 때문에 실제로 실행되고 있습니까? –

답변

1

mysql_free_result()는 큰 결과 집합을 반환하는 쿼리에 사용되는 메모리 양이 걱정되는 경우에만 호출하면됩니다.

관련된 모든 결과 메모리는 스크립트 실행이 끝날 때 자동으로 해제됩니다.

함수가 $this->queryRes;을 반환하고 다음 단계에 도달하지 않기 때문에 문제가 발생하지 않습니다.

0

mysql_free_result를 어떻게 올바르게 사용할 수 있습니까?

그냥 사용하지 마십시오.

관련 문제