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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Почему в одном движке не закрывают соединение с базой ?

Сообщения:  [1-3] 

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

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

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

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

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

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

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

   
 
 автор: 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 соединений с базой , но ведь на сервере может быть ограничение на количество соединений с БД тогда получится что новые пользователи не смогут получит доступ к сайту или я что то путаю ?

   

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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