我有这段代码:
$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”。
答案 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