[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оптимизация , max_user_conection
web-monster
Столкнулся с проблемой когда в сети 17 человек было начал показывать max_user_conection и всё висло..

Структура сайта такова грубо говоря

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 написал(а):
А как будет выглядеть проверка на то что соединение уже открыто? smile.gif

Спустя 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) ;
...

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.