如何修改mysql_pconnect函数以计算查询

时间:2011-09-10 09:54:12

标签: php mysql function count

我有这段代码:

$hostname = "localhost";
$database = "listings";
$username = "joe";
$password = "1234";

$my_connection = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);

我怎样才能修改$ my_connection函数,以便它增加一个像$ total_queries这样的变量,然后它会执行正常的mysql_pconnect()事情,当然还会返回相同的东西? 目的是能够在站点页脚中打印:“总查询:x”。

2 个答案:

答案 0 :(得分:1)

您无需更改mysql_pconnect()调用即可计算查询总数。实际上,您不需要在每次查询之前创建新的mysql连接 - 如果您一直使用相同的MySql服务器 - 您可以(并且在大多数情况下 )只使用一个连接。 回到你的问题:如果你想计算查询总数 - 创建一个函数(或MySQL包装类),并将其用于每个查询。在这种情况下,您将能够找到查询总数。这是这样一个类的模型:

class MySQLWrapper
{

private $_link;
private $_totalQueries;

/**
* Connects to the database server
*
* @param string $hostname
* @param string $username
* @param string $password
*
*/
public function connect($hostname, $username, $password) {
     if (is_null($this->_link)) {
         $this->_link = mysql_pconnect($hostname, $username, $password);
     }
}

/**
* Performs query
*
* @param string $sql
* @return resource
*/
public function query($sql) {
    $this->_totalQueries++;
    return mysql_query($sql, $this->_link);
}

/**
* Returns count of queries made
* @return int
*/
public function getTotalQueryCount() {
    return $this->_totalQueries;
}
}

因此,要找出所做的查询总数,可以调用getTotalQueryCount()方法。

注意,这只是真实类的模型,实际代码可能不同,但我认为你有了这个想法。

答案 1 :(得分:0)

您需要为数据库连接/查询执行创建一个抽象层。你真的想抽象它,所以你有集中的错误处理。

例如,如果您创建自己的具有连接和执行函数的类,则可以在其中添加所需的任何代码,例如查询计数。您甚至可以让执行功能检查数据库连接是否处于活动状态,如果不连接则建立连接。然后,您的mysql_pconnect可以成为查询执行函数的一部分。

另外,除非您有特定理由在常规连接上使用持久连接,否则不应使用持久连接。这有点违反直觉。 http://php.net/manual/en/features.persistent-connections.php