Структура сайта такова грубо говоря
sitetop.php
content.php
sitedown.php
в sitetop.php идёт action.php в котором инклудится соединение с базой оно у меня вот так сделано:
сlass Db extends Config {
private $connection ;
function __construct() {
$this->open_connection() ;
//echo "Соединение установлено" ;
}
private function open_connection()
{
$this->connection = mysql_connect($this->DB_HOST,$this->DB_USER,$this->DB_PASS) ;
if(!$this->connection)
{
die("Нет соединения с базой: ". mysql_error()) ;
}
else
{
$db_select = mysql_select_db($this->DB_NAME) ;
if(!$db_select)
{
die("Нет соединения с таблицей: ". mysql_error()) ;
}
}
mysql_query("set names utf8") or die("set names utf8 failed") ;
}
public function sql($query)
{
$result = mysql_query($query, $this->connection);
if(!$result)
{
die("Ошибка запроса: ".mysql_error());
}
return $result;
}
}
$db = new db() ;
в sitedown.php идёт mysql_close();
Так нормально или как закрывать?
И ещё вопрос если я например пишу сообщение то идёт запрос к message_func.php в котором инклудится action.php(соединение с базой), а sitedown не инклудиться надо в конце message_func.php писать mysql_close() ?
Посоветуйте как правильно!
Спустя 1 день, 9 часов, 51 минута, 47 секунд (19.08.2010 - 10:41) web-monster написал(а):
Кто нибудь знает?
Спустя 13 минут, 27 секунд (19.08.2010 - 10:55) linker написал(а):
mysql_close() не обязательно вообще, когда скрипт отработает, соединение с БД будет автоматически закрыто.
В
В
function open_connection()напрочь отсутствует проверка на вероятность того, что соединение-то может уже и открыто. В результате вероятного множественного инклуда с этим кодом, вполне существует проблема расплодить кучу соединений, которые и превышают лимит MySQL.
Спустя 13 часов, 54 минуты, 59 секунд (20.08.2010 - 00:50) web-monster написал(а):
А как будет выглядеть проверка на то что соединение уже открыто?

Спустя 7 минут, 45 секунд (20.08.2010 - 00:58) web-monster написал(а):
И вроде если будет сделан второй вызов «mysql_connect()» с теми же аргументами, новое соединение не установится — вместо этого, будет возвращен идентификатор уже открытого соединения или я путаю? )
Спустя 7 часов, 13 минут, 16 секунд (20.08.2010 - 08:11) linker написал(а):
Нет, не путаешь, забыл я. Но не будет лишним
private function open_connection()
{
if (is_resource($this->connection)) return;
$this->connection = mysql_connect($this->DB_HOST,$this->DB_USER,$this->DB_PASS) ;
...
}