在特定的PHP - MySQL应用程序中,我一直遵循在公共方法中创建和销毁PDO连接的做法。
例如:
public function updateCustomerNumber($customer_id, $customer_number){
$conn = new database_class();
$sql = "UPDATE customers set number = :CUSTOMER_NUMBER where id = :CUSTOMER_ID";
$query = $db->prepare($sql);
$query->execute(array(':CUSTOMER_NUMBER' => $customer_number, ':CUSTOMER_ID'=>$customer_id));
$conn->disconnect();
if($query->rowCount()>0){
return true;
} else {
return false;
}
}
所以我已经连接并断开了方法中的PDO连接。数据库连接方法:
public function connect() {
if (!$this->con) {
try {
$this->db = new PDO("mysql:host=$this->db_host;dbname=$this->db_name;charset=utf8", $this->db_user,$this->db_pass);
$this->db->exec("SET CHARACTER SET utf8");
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->con = true;
return $this->db;
} catch (PDOException $e) {
$error = $e->getMessage();
echo $error;
}
} else {
return $this->db;
}
}
数据库断开连接方法:
public function disconnect() {
if ($this->con) {
unset($this->db);
$this->con = NULL;
return true;
} else {
return false;
}
}
到目前为止我还没有遇到过任何问题,除了在一些方法中我忘记在脚本末尾断开PDO连接。但是,我不确定是否存在遵循这种方法的任何缺点。
我开始质疑这个方法的原因是我检查MySQL全局状态值。
Aborted_clients:32560 Aborted_connects:128080
按照定义,即使我们没有明确地关闭连接,PHP也会在脚本结束时自动关闭连接。
这些数字背后可能是什么原因?这种打开和关闭PHP PDO连接的方法是否正确?