|
|
|
|
|
для: Trianon
(06.07.2007 в 12:10)
| | Теперь все понятно спасибо Trianon | |
|
|
|
|
|
|
|
для: Prihod
(06.07.2007 в 10:45)
| | Не путайте две вещи:
1. время нахожндения посетителя на сайте
2. время исполнения скрипта
Первое не ограничено ничем.
Второе, по сути - мгновенно.
Соединение с БД закрывает (в числе прочих открытых скриптом ресурсов) движок PHP, когда скрипт завершает работу по формированию очередной запрошенной странички.
Кончено, программист может сам вызвать Disconnect.
Но лучше, если он этого делать не будет.
Что Вы и наблюдаете. | |
|
|
|
|
|
|
| На днях просмотрел исходник одного информационного движка и меня смутил один момент.
Имеется класс который работает с базой данных
<?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 соединений с базой , но ведь на сервере может быть ограничение на количество соединений с БД тогда получится что новые пользователи не смогут получит доступ к сайту или я что то путаю ? | |
|
|
|
|