|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dmitry Tsigelnik 2:5020/400 13 Oct 2003 18:38:40 To : All Subject : Mod_Perl and DB connection (Решение найдено) -------------------------------------------------------------------------------- Привет всем еще раз! Короче ни одного дельного совета я не увидел и нашел свое решение! Я написал свой DB::Pool. Решение очень простое. Я организовал пул в виде очереди(FIFO). Всего два метода get_connection и free_connection при вызове get_connection мы пытаемся вытащить коннект из очереди, если он пингуется мы его возвращаем, если нет делаем shift @$pool дальше. если очередь кончается, открываем новый коннект. При вызове free_connection возвращаем хэндлер в очередь. Если размер очереди больше какого-то числа, то не возвращаем его в туда, что бы он не разростался до бесконечности. Вот и все решение!!! Это будет работать и в случае CGI и в mod_perl1 и mod_perl2. В первых 2-х случаем будет гоняться по кругу один и тот же коннект, в последнем случае в зависимости от нагрузки веб-сервера. Сюда можно так же добавить и немного искуственного интелекта, т.е. если нагрузка за последние несколько часов упала, то закрыть лищние коннекты. Так же можно собирать статистику о разорванных коннектах и т.д. P.S. главное что бы не был включен Apache::DBI, иначе он все испортит -------------------- Dmitry Tsigelnik -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/648897a1a2d1.html, оценка из 5, голосов 10
|