PDA

View Full Version : سوال: قطع ارتباط در هنگام اتصال به پایگاه داده هنگام استفاده از pdo



qartalonline
دوشنبه 15 مهر 1392, 21:04 عصر
سلام دوستان

من در حال طراحی سیستم مدیریت محتوا با الگوی mvc هستم و برای اتصال به پایگاه داده از کلاس زیر استفاده میکنم:

class DataBase {



public function DataBaseConnect() {

global $_db;

if (!isset($_db) || $_db!=NULL) {
return $this->dbConnect();
}

}



private function dbConnect() {

try {

$db = new PDO('mysql:dbname='. DB_DATABASE. ';host='.DB_HOST, DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (Exception $exc) {

errorHandler(8300, $exc->getMessage());
return FALSE;
}

return $db;

}



}



سپس اون رو بصورت زیر به کار میبرم:

global $_db;
requireOnce('database', 'class');
$db = new DataBase();
$_db = $db->DataBaseConnect();



و در برخی از کلاس ها بصورت زیر هم از پایگاه داده استفاده میکنم:

$this->link = $_db;


حالا چند تا سوال داشتم:
1. اینکه این روش به نظرتون درسته یا نه؟
2. اگه بخواییم اتصال به پایگاه داده رو قطع کنیم باید تمام متغییرها ($db ، $_db و $this->link) رو از بین ببریم؟



با تشکر

AliRezaPro
دوشنبه 15 مهر 1392, 23:38 عصر
1 : بله درسته
2 : فقط کانکشن رو لازم است که unset یا برابر null قرار دهید

qartalonline
سه شنبه 16 مهر 1392, 07:21 صبح
خوب من اینجا کانکشن رو به سه تا متغییر دادم میخوام بدونم با unset کردن یکی مثلا $_db کانکشن قطع میشه؟

qartalonline
سه شنبه 16 مهر 1392, 18:05 عصر
یا سوال من خیلی ساده و پیش پا افتادس یا خیلی سخت و پیچیده که دوستان جواب نمیدن!!! نمیدونم!!!

AliRezaPro
سه شنبه 16 مهر 1392, 19:29 عصر
Upon successful connection to the database, an instance of the PDO class is returned to your script. The connection remains active for the lifetime of that PDO object. To close the connection, you need to destroy the object by ensuring that all remaining references to it are deleted--you do this by assigning NULL to the variable that holds the object. If you don't do this explicitly, PHP will automatically close the connection when your script ends.
$_db را unset کنید