3

Я использую Apache 2.4 на моем сервере. Мои сценарии используют много команд system() и они требуют работы в одном режиме процесса.

Когда я запускаю apache, используя команду:

apachetctl -X

(обычно это режим отладки, который работает как один процесс, если я не ошибаюсь), он работает нормально. Однако, если я запускаю Apache как системный демон, он больше не работает и дает довольно странные результаты.

Я прокомментировал следующую строку в httpd.conf

LoadModule mpm_event_module modules/mod_mpm_event.so

это не помогло, затем я раскомментировал его и дал следующую конфигурацию в файле httpd-mpm.conf :

<IfModule mpm_event_module>
    StartServers             1
    MinSpareThreads          1
    MaxSpareThreads          1
    ThreadsPerChild          1
    MaxRequestWorkers        1
    MaxConnectionsPerChild   0
</IfModule>

Но это все равно не сработает. В каталоге /etc/httpd/modules/ есть и другие модули, связанные с потоками и процессами:

mod_mpm_event.so
mod_mpm_worker.so
mod_mpm_prefork.so

В документации я прочитал, что они должны быть предварительно скомпилированы в Apache, но когда я вызываю команду apachectl -l все, что я получаю, это:

# apachectl -l               
Compiled in modules:
  core.c
  mod_so.c
  http_core.c

Итак, мой вопрос заключается в следующем. Как настроить Apache 2.4, чтобы он работал в том же режиме, как если бы он был запущен с помощью команды apachectl -X . Спасибо большое.

1 ответ1

1

Чего не хватало, так это определения ServerLimit . Как только я добавил это, это решило проблему. Теперь все команды system() работают нормально, и я веду себя точно так же, как в режиме отладки.

<IfModule mpm_event_module>
    StartServers             1
    MinSpareThreads          1
    MaxSpareThreads          1
    ThreadsPerChild          1
    MaxRequestWorkers        1
    MaxConnectionsPerChild   0
    ServerLimit              1
</IfModule>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .