2012-04-24 1 views
1

Я разрабатываю приложение на базе Apache с несколькими настраиваемыми модулями.Есть ли способ определить порядок загрузки модулей apache

Я хотел бы поделиться некоторыми функциями в одном модуле с другими. Мне нужно связать их вместе во время фазы stratup. Я хочу использовать GetModuleHandle + GetProcAddress (он будет работать только под Windows) с именем модуля, но это будет успешным, только если модуль уже загружен сервером Apache.

Есть ли способ настроить порядок загрузки модулей Apache. Мне нужно только контролировать свои модули - другие не имеют значения.

Спасибо заранее.

+1

Я думаю (но я не уверен, поэтому не принимайте это как авторитетные) модули загружаются в том порядке, в котором директивы' LoadModule' появляются в файл конфигурации. Вероятно, вы должны просто сбой с ошибкой, если 'GetModuleHandle' терпит неудачу и документирует тот факт, что порядок важен. – larsks

ответ

1

Если вы пытаетесь управлять порядком заказа крюка Apache из источника вашего модуля, вы можете попробовать использовать APR_HOOK_FIRST, APR_HOOK_MIDDLE и APR_HOOK_LAST. Или вы можете специально назвать другие модули, чтобы обеспечить ограничения порядка. Из docs:.

... «Есть два механизма для осуществления этого первое, довольно грубого, метод, позволяет указать примерно, где крючок выполняемый по сравнению с другими модулями Окончательного контроля аргумента это. . Есть три возможных значения:. APR_HOOK_FIRST, APR_HOOK_MIDDLE и APR_HOOK_LAST

«Все модули, использующие любое конкретное значение может выполняться в любом порядке по отношению друг к другу, но, конечно же, все модули, использующие APR_HOOK_FIRST будут запущены до APR_HOOK_MIDDLE, который до APR_HOOK_LAST. Модули, которые не заботятся, когда они запускаются, должны использовать APR_HOOK_MIDDLE. Эти значения отстоят друг от друга, так что позиции, подобные APR_HOOK_FIRST-2, можно зацепить чуть раньше, чем другие функции. ...

«Другой метод позволяет более тонкое управление.Когда модуль знает, что он должен быть запущен до (или после) некоторых других модулей, он может указывать их по имени. Второй (третий) аргумент - это NULL- завершенный массив строк, состоящий из имен модулей, которые должны быть запущены до (после) текущего модуля. Например, предположим, что мы хотим, чтобы «mod_xyz.c» и «mod_abc.c» выполнялись до того, как мы это сделаем, следующим образом ... "[пример следует]

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

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