2013-08-08 5 views
0

Как запустить обработчик mod_perl (так называемый MyCacheHandler.pm) непосредственно из другого модуля perl (называемого MyModule.pm). Поскольку в настоящее время я запускаю обработчик через веб-браузер, но было бы немного проще назвать его с помощью MyModule.Запустить обработчик mod_perl из другого модуля perl

ответ

0

Как я понимаю, вы хотите иметь его (MyCacheHandler), работающий в фоновом режиме, и он не будет выводить видимые (в браузер) выходные данные? (Только побочные эффекты).

Если это так, то почему оно даже реализовано как обработчик mod_perl. Просто реализуйте его как скрипт и запустите его с cron или как daemon.

Вы все еще можете управлениеMyCacheHandler от MyModule (скажем, через МПК).

+0

Ну, я не могу использовать MyCacheHandler как cron, потому что мне это нужно, только если был использован MyModule. Поэтому пользователь запускает MyModule Мне нужен MyCacheHandler, поэтому я хочу называть что-то вроде PerlModules :: MyChacheHandler :: handler() в MyModule. Это будет работать? – atticus3000

+0

Это зависит от того, что 'MyCacheHandler' * делает *. В предыдущем вопросе вы установили три разных значения кеша, сон между вызовами 'set'. Если вы вызовете эту функцию из своего обработчика MyModule, он будет «блокировать» остальную часть кода в «MyModule» от запуска. Вам нужно каким-то образом запустить его в фоновом режиме. –

+0

Хорошо. Я понимаю проблему. Так можно ли использовать Apache2 :: SubProcess для запуска нового подпроцесса, который запускает MyCacheHandler? – atticus3000

0

Сделайте некоторые рефакторинг. Разделить MyCacheHandler.pm на два модуля: один, который выполняет тяжелую работу и больше не зависит от mod_perl (т. Е. Больше не обрабатывается с помощью $r), поэтому он может быть вызван из других модулей. Другой будет теперь тонким обработчиком mod_perl, вызывающим первый модуль.

Или оставьте это как есть, и просто используйте LWP::UserAgent для доступа MyCacheHandler от MyModule.

+0

Он не упоминает об этом в сообщении, но @ atticus3000 хочет, чтобы код в MyCacheHandler выполнялся асинхронно в отношении 'MyModule'. Никакой рефакторинг не исправит это. –

 Смежные вопросы

  • Нет связанных вопросов^_^