2013-05-08 222 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 2013-05-08 13:29:10

+1

[請不要在新代碼中使用'mysql_ *'函數](http://stackoverflow.com/q/12859942/1190388)。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到紅色框?改爲了解準備好的語句,然後使用[tag:PDO]或[tag:MySQLi]。 – hjpotter92 2013-05-08 13:29:14

+0

出於興趣,因爲'mysql_free_result()'在方法返回後被調用,它實際上是否正在運行? – 2013-05-08 13:30:22

回答

1

如果您擔心返回大型結果集的查詢使用了多少內存,只需要調用mysql_free_result()。

所有相關的結果內存在腳本執行結束時自動釋放。

在你的情況下,它看起來不好,因爲你的函數返回$this->queryRes;,它不會到達下一步。

0

如何正確使用mysql_free_result。

只是不要使用它。