MYSQL_FREE_RESULT如何正确使用?
问题描述:
我在一些页面上有大的查询(一行约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);
}
这是使用真实?如果不是这样,我该如何正确使用?
答
如果您担心返回大型结果集的查询使用了多少内存,只需要调用mysql_free_result()。
所有相关的结果内存在脚本执行结束时自动释放。
在你的情况下,它看起来不好,因为你的函数返回$this->queryRes;
,它不会到达下一步。
答
如何正确使用mysql_free_result。
只是不要使用它。
这是你必须维护的旧代码吗?否则,开始考虑迁移到MySQLi或PHP PDO。 – Terence 2013-05-08 13:29:10
[请不要在新代码中使用'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
出于兴趣,因为'mysql_free_result()'在方法返回后被调用,它实际上是否正在运行? – 2013-05-08 13:30:22