>>Не могу собрать апача с MPM модулем perchild.
>>./configure --with-mpm=perchild
>>выдает
>>-------------------------------------------------------------
>>checking which MPM to use... perchild
>>The currently selected MPM requires threads which your system seems to lack
>>
>>checking checking for replacement... prefork selected
>>-------------------------------------------------------------
>>может знает кто в чем проблемма и как ее решить?
>>Заранее огромное спасибо!
>
>Я собирал. Но толку все равно ноль - от просто виснет на
>каждом втором запросе. Забей.
Не собирал perchild. Но собирал worker - симптомы зависания при запросе те же.
Но вот есть какая штука - до вчерашнего дня я понятия о ней не имел:
виснет то он более менее понятно из-за чего - потоки в FreeBSD имплементированы так , что не годятся для этого модуля. Но есть не BSD -шные потоки - например linuxthreads - можно попробовать собрать с ними - думаю , что тоже заработает , хотя я расскажу про родные FreeBSD-ные потоки.
Так вот есть оказывается несколько имплементаций потоков - стандартная - это libc_r - рендерные библиотеки C.
Но есть и ещё. Начиная с версии 5.0 в BSD появились потоки kse - библиотека libkse. В настоящий момент ( 5.2-current ) они переименованы
в libpthreads. Так вот вчера собрал с libkse апач с mpm worker - он собрался - это первое. И ГЛАВНОЕ - не завис при обращении! Отлично показал все страницы. То что он работает именно в потоковом режиме можно
увидеть с помощью ps axH ( там на один pid будет несколько строк ).
Можно не пересобирать апач на самом деле заново - если он не был собран статически. Нужно воспользоваться libmap.conf в этом случае ( man libmap.conf ).
Сейчас я думаю - что же выбрать worker - который вроде должен работать
нормально или perchild - потому что про него изначально говорится , что
его разработка приостановлена и он ещё очень сырой.
Может кто в курсе - насколько он стабилен например на других системах ?
По поводу исполнения от имени пользователя скриптов. Я решаю эту проблему тем , что php собран у меня как модуль и как CLI. Если скрипт
запускается через модуль апачей - то он работает в safe_mode. Если как
обычный CGI скрипт - то там срабатывает SuExec и нет никакого safe_mode.
safe_mode всё таки довольно ограничительная штука.
Но мне это не очень нравится , потому и хочу всё таки использовать perchild. Знаю так же что кое кто правит исходники апача и заставляет
его работать ( ещё 1.3 апач ) так же как в режиме per_child - не не используя потоки. То есть смысл тот же - исполнение сервера от имени юзера - но основан на fork-е.
Точно как делается - не знаю и не чувствую себя настолько сильным программистом, чтобы так править код апачей.