Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему в одном движке не закрывают соединение с базой ?
 
 автор: Prihod   (06.07.2007 в 10:45)   письмо автору
 
 

На днях просмотрел исходник одного информационного движка и меня смутил один момент.
Имеется класс который работает с базой данных

<?php
class FetchResultDB
{
    var 
$_result;

    function 
FetchResultDB($result)
    {
        
$this->_result $result;
    }
        
//Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.
    
function FetchArray()
    {
        return 
mysql_fetch_array($this->_result);
    }
        
//Перемещает внутренний указатель в результате запроса
    
function dataseek() {
        return @
mysql_data_seek($this->_result);
    }

        
    function 
FetchRow()
    {
        return @
mysql_fetch_object($this->_result);
    }

    function 
close()
    {        
//Освобождает память от результата запроса
        
$r = @mysql_free_result($this->_result);
        unset(
$this);
        return 
$r;
    }
}
//----------------------------------------------------------------------------------------------------
class DB
{
    var 
$_handle;

    function 
DB($host_name$user_name$pass$db)
    {
        
$this->_handle = @mysql_connect($host_name$user_name$pass);
        if(!
$this->_handle)
        {
            
$this->Error('connect');
            return 
false;
        }
                   
//Выбирает базу данных MySQL
        
if(!@mysql_select_db($db$this->_handle))
        {
            
$this->Error('selectdb');
            return 
false;
        }

        return 
true;
    }

    function 
Query($query)
    {
        
$res = @mysql_query($query$this->_handle);
        if(!
$res)
        {
            
$this->Error('query'$query);
        }

        return new 
FetchResultDB($res);
    }

        function 
Error($type$query '')
    {
        global 
$pref;
        
$my_error mysql_error();
        
$my_errno mysql_errno();

        if(
$my_errno != 1091 && $my_errno != 1050 && $my_errno != 1062)
        {
            @
putlog("MySQL Ошибка!" "\nЗапрос\n" .addslashes($query) . "\n\nError\n" addslashes($my_error) . "\n\nСтраница\nhttp://$_SERVER[HTTP_HOST]"$_SERVER[REQUEST_URI]\n\nIP: $_SERVER[REMOTE_ADDR]",4);
        }
        return 
true;

    }


    function 
Disconnect()
    {
        
mysql_close($this->_handle);
    }
}
?>  

Потом имеется файл init.php в котором подключаются всякие модули config.php т.д а также создается объект для работы с базой

$db = new DB($dbhost, $dbuser, $dbpass, $dbname);

После этого init.php подключается ко всевозможным php скриптам
require_once(“init.php");

Так вот меня смутило то что нигде в скриптах не происходит вызов функции Disconnect() из класса DB т.е получается что на протяжении всего времени что пользователь находится на сайте открыто соединение с базой и если на сайте 100 пользователей то соответственно открыто 100 соединений с базой , но ведь на сервере может быть ограничение на количество соединений с БД тогда получится что новые пользователи не смогут получит доступ к сайту или я что то путаю ?

   
 
 автор: Trianon   (06.07.2007 в 12:10)   письмо автору
 
   для: Prihod   (06.07.2007 в 10:45)
 

Не путайте две вещи:
1. время нахожндения посетителя на сайте
2. время исполнения скрипта

Первое не ограничено ничем.
Второе, по сути - мгновенно.

Соединение с БД закрывает (в числе прочих открытых скриптом ресурсов) движок PHP, когда скрипт завершает работу по формированию очередной запрошенной странички.

Кончено, программист может сам вызвать Disconnect.
Но лучше, если он этого делать не будет.
Что Вы и наблюдаете.

   
 
 автор: Prihod   (06.07.2007 в 12:33)   письмо автору
 
   для: Trianon   (06.07.2007 в 12:10)
 

Теперь все понятно спасибо Trianon

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования