Как запустить обработчик mod_perl (так называемый MyCacheHandler.pm) непосредственно из другого модуля perl (называемого MyModule.pm). Поскольку в настоящее время я запускаю обработчик через веб-браузер, но было бы немного проще назвать его с помощью MyModule.Запустить обработчик mod_perl из другого модуля perl
ответ
Как я понимаю, вы хотите иметь его (MyCacheHandler
), работающий в фоновом режиме, и он не будет выводить видимые (в браузер) выходные данные? (Только побочные эффекты).
Если это так, то почему оно даже реализовано как обработчик mod_perl
. Просто реализуйте его как скрипт и запустите его с cron
или как daemon
.
Вы все еще можете управлениеMyCacheHandler
от MyModule
(скажем, через МПК).
Сделайте некоторые рефакторинг. Разделить MyCacheHandler.pm
на два модуля: один, который выполняет тяжелую работу и больше не зависит от mod_perl
(т. Е. Больше не обрабатывается с помощью $r
), поэтому он может быть вызван из других модулей. Другой будет теперь тонким обработчиком mod_perl
, вызывающим первый модуль.
Или оставьте это как есть, и просто используйте LWP::UserAgent
для доступа MyCacheHandler
от MyModule
.
Он не упоминает об этом в сообщении, но @ atticus3000 хочет, чтобы код в MyCacheHandler выполнялся асинхронно в отношении 'MyModule'. Никакой рефакторинг не исправит это. –
Ну, я не могу использовать MyCacheHandler как cron, потому что мне это нужно, только если был использован MyModule. Поэтому пользователь запускает MyModule Мне нужен MyCacheHandler, поэтому я хочу называть что-то вроде PerlModules :: MyChacheHandler :: handler() в MyModule. Это будет работать? – atticus3000
Это зависит от того, что 'MyCacheHandler' * делает *. В предыдущем вопросе вы установили три разных значения кеша, сон между вызовами 'set'. Если вы вызовете эту функцию из своего обработчика MyModule, он будет «блокировать» остальную часть кода в «MyModule» от запуска. Вам нужно каким-то образом запустить его в фоновом режиме. –
Хорошо. Я понимаю проблему. Так можно ли использовать Apache2 :: SubProcess для запуска нового подпроцесса, который запускает MyCacheHandler? – atticus3000