2013-05-08 187 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。

只是不要使用它。