|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Igor Mikhailov 2:5005/42.21 13 Mar 2001 05:29:49 To : All Subject : mason, mod_perl -------------------------------------------------------------------------------- password: :-P В статье про мазон на http://www2.linuxjournal.com/lj-issues/issue74/4002.html приводится такой пример: ============================ <%once> my $dbh; # Declare $dbh only once </%once> <%init> # If this is the first time we're running, # connect to the database if ($m->current_comp->first_time) { $dbh = DBI->connect("DBI:mysql:$database:localhost", $username, $password) || die qq{DBI error from connect: "$DBI::errstr"}; } </init> =========================== Какой смысл DBI->connect делать в <%init>, а не в <%once>, если все равно делаем его только один раз? Дальше. В "Mason Administrator's Guide" в разделе "Using global variables" есть такой намек: ================== $interp->set_global(dbh => DBI->connect(...)); Again, set_global will do the right thing if you've chosen a different package for components. Now when referring to these globals inside components, you can use the plain variable name: $dbh->prepare... ================== Т.е. типа объявление и инициализация $dbh при старте, и при этом можно вроде как DBI->connect не писать в каждой компоненте, а юзать сразу глобальную $dbh. Что то я сомниваюсь, что это вообще будет работать (при форке разве разные $dbh будут инициализироваться?). И у меня оно и не заработало. Сейчас у меня используется Apache::DBI->connect_on_init в handler.pl и DBI->connect <%once> в каждом компоненте. Вроде все работает. Hо неплохо было бы выкинуть DBI->connect из компонент вообще, как написано в "Mason Administrator's Guide". Hо - не работает. У кого нибудь получилась такая схема? И еще один вопрос. Похоже что невозможно выйти из компонента таким образом, чтоб <%cleanup> все таки вызвался? Т.е. к примеру написать return_n_cleanup - сразу прыгаем в конец компоненты, отрабатываем код из <%cleanup>, потом нормально завершаемся. Hельзя? :( With best wishes Igor. Key fingerprint = 31C3 0B0B 5FF2 FE45 8D64 718D 5BA2 80CC 7B77 88DD --- GoldED/LNX 3.0.1 * Origin: Программа - это последовательность обработки ошибок. (2:5005/42.21) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/32643aada59e.html, оценка из 5, голосов 10
|