Sheryld
14.07.2004, 20:31
Вобщем, решил я написать свой простенький dal-компонент(точнее переписать) для доступа к mysql. понимаю, что есть PEAR, но всегда хочется иметь под рукой что-то легкое...
Ок. Сказано - сделано. Решил его потестировать, а заодно опробовать графический интерфейс прораммы MySqlAdministrator(там завлекательные графики и таблицы текущей нагрузки на сервер).
Создаю бд(myIsam). Заполняю ее данными. Но все это не суть важно, на самом деле.
Значит создал я следующий тест:
<?
for(int i=0; i<10000; i++)
{
TestFunc();
}
function TestFunc()
{
//создаем экземпляр моего класса
//коннектимся и выбираем бд
//выполняем запрос(берем все 8 записей)
//парсим результат и выводи скажем первое поле
//а тут внимание! вызываем функцию(моего класса, которая инкапсулирует закрытие соединения с бд!
}
?>
если я вызываю закрытие соединения, то через какое-то время(после нескольких тысяч итераций цикла) база не дает к ней обращаться(пробовал не только из php), просто она не справляется и говорит что нельзя подконектиться, т.е. часть данных не возвращается.
если я убираю закрытие соединения - то все просто летает, но позрастает траффик(это показывает MySqlAdministrator).
я знаю, что если параметры функции mysql_connect такие же, что и в прошлый раз и есть живой реальный экземпляр соединения, то нового соединения к базе не будет, а вернется лишь новый ресурс.
кстати это косвенно подверждается тем, что текущих соединений не больше 5(смотрел опять же через MySqlAdministrator). эта цифра кстати не зависила у меня от того "закрывал" ли я соединение или нет(с помощью - mysql_close().
вобщем разъясните что не так с этим mysql_close() и может его вообще не нужно вызывать?
Ок. Сказано - сделано. Решил его потестировать, а заодно опробовать графический интерфейс прораммы MySqlAdministrator(там завлекательные графики и таблицы текущей нагрузки на сервер).
Создаю бд(myIsam). Заполняю ее данными. Но все это не суть важно, на самом деле.
Значит создал я следующий тест:
<?
for(int i=0; i<10000; i++)
{
TestFunc();
}
function TestFunc()
{
//создаем экземпляр моего класса
//коннектимся и выбираем бд
//выполняем запрос(берем все 8 записей)
//парсим результат и выводи скажем первое поле
//а тут внимание! вызываем функцию(моего класса, которая инкапсулирует закрытие соединения с бд!
}
?>
если я вызываю закрытие соединения, то через какое-то время(после нескольких тысяч итераций цикла) база не дает к ней обращаться(пробовал не только из php), просто она не справляется и говорит что нельзя подконектиться, т.е. часть данных не возвращается.
если я убираю закрытие соединения - то все просто летает, но позрастает траффик(это показывает MySqlAdministrator).
я знаю, что если параметры функции mysql_connect такие же, что и в прошлый раз и есть живой реальный экземпляр соединения, то нового соединения к базе не будет, а вернется лишь новый ресурс.
кстати это косвенно подверждается тем, что текущих соединений не больше 5(смотрел опять же через MySqlAdministrator). эта цифра кстати не зависила у меня от того "закрывал" ли я соединение или нет(с помощью - mysql_close().
вобщем разъясните что не так с этим mysql_close() и может его вообще не нужно вызывать?