![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| ginnie |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Уважаемые коллеги!
Ни для кого не секрет, что при разработке обработчиков (handlers) mod_perl приходится использовать специальный модуль перекомпиляции обработчика при его изменении. Я активно использую Apache::StatINC для этих целей (у меня он работает гораздо надежнее, чем Apache::Reload). Имена модулей, загруженных и скомпилированных при помощи use(), require() или do() заносятся в хеш %INC. Apache::StatINC проверяет дату изменения файлов из %INC и перекомпилирует модули, если произошли изменения. Проблема в том, что модули, скомпилированные при запуске Apache при помощи PerlModule в хеш %INC не попадают, и не перекомпилируются при изменении. Раньше боролся с этой проблемой простым исключением дорабатываемого модуля из PerlModule в конфигурации сервера разработки. Но вчера возникла новая проблема: начал разрабатывать модуль, в котором функции используются в качестве разных обработчиков.
Если MyModule убрать из PerlModule, Apache перестает вызывать функции 1 и 2 с сообщением, что они не видны. Пришлось воспользоваться "грязным хаком" (вручную добавляем нужный модуль в %INC):
Может кто предложит нормальное (красивое) решение? Это сообщение отредактировал(а) ginnie - 2.2.2008, 11:14 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||
|
|||||
| ginnie |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Уважаемые коллеги, если у кого есть возможность проверить на mod_perl1, попробуйте код
У меня в исходном варианте дает incorrect. В варианте
выдает correct. Для нормальной загрузки модулей лучше всего использовать загрузочный скрипт startup.pl
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||||
|
|||||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
у меня второй, первый наверное на запуститься на втором apache... могу на втором
Это сообщение отредактировал(а) gcc - 1.1.2009, 09:12 |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
ginnie, да я вот тоже прихожу к мысли, что стоит заводить startup.pl или Bootstrap.pm =) кому что больше нравится.
Кстати и Catalyst к этому склоняется, используя ApplicationName.pm для таких целей |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
|
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
tishaishii, Вы уверены, что PerlSwitches есть в mod_perl1
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Ну чего язык-то показываешь, тебе ж ведь надо. Ан его нету там, а жаль.
А на 2й перейти никак? |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Уважаемый tishaishii, приношу свои глубочайшие извинения и прошу не принимать язык на свой счет! Это я дурачился
Перевести систему на mod_perl2 возможности нет. Странно то, что первые упоминания о таком поведении в Интернет датируются 2001 годом. При этом Stas Bekman (разработчик mod_perl) отвечал, что эта ошибка исправлена, но сейчас уже 2009, а она продолжает воспроизводиться! Мне видится два варианта:
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Вот нет у меня первого.
А если так:
? |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |