Благодарю Вас, Валентин, за подробный и развёрнутый ответ! :-)
Вы меня серьёзно озадачили и заставили пересмотреть некоторые мои знания, впрочем этого я и хотел. :-)> А для чего у вас php c Apache через FastCGI работает вместо mod_php? Есть конечно кейсы в которых даже с Apache такой вариант необходим, но FastCGI имеет свои накладные расходы и тут не добавляет эффективности.
Мне казалось что mod_php это удел конфигураций всяких денверов на локалхостах, которые не могут осилить нормальную конфигурацию сервера.
В mod_php:
- можно использовать только prefork, нельзя использовать event, что мне тогда казалось снижает производительность.
- интерпритатор задействован даже когда отдаётся статика.
- на каждый запрос создаётся свой процесс что приводит к повышенному расходу ОЗУ
- Ошибка в одном PHP-скрипте может положить Apache со всеми виртуальными хостами
- нельзя использовать разные версии PHP для разных виртуальных хостов.
- не читаются .user.ini файлы https://www.php.net/manual/ru/configuration.file.per-user.php
В FastCGI этого всего нет, мне тогда он казался однозначно лучше, хотя сейчас погуглив эту тему, пишут что при высокой нагрузке mod_php показывает большую производительность.
Почему большую, мне не понято. Читая Ваш ответ про MPM event, он должен быть. как минимум, не хуже.
> Но так ли необходим .htaccess?
> Даже просто отказ от него с сохранением Apache даст заметный прирост производительности.
Вот это для меня было новостью.
Я и не предполагал что mod_rewrite так сильно влияет на производительность Apache.
Я его использую для маршрутизации, тут https://www.opennet.ru/openforum/vsluhforumID3/118512.html#59 привёл пример его использования.
Пол дня думал над тем, могу ли я от него отказаться.
Если кратко, то в DOCUMENT_ROOT у меня есть только 2 объекта к которым можно обращаться
это директория static и файл index.php
Если я откажусь от .htaccess мне нужно чтобы на стороне сервера я мог прописать нечто такое.
- Если URI начинается на /static/ (/static/img/favicon.png) то сервер отдавал статику, даже не пытаясь задействовать php (короче чтобы он не вмешивался и делала что и обычно).
- Но если запрос НЕ содержит /static/ (/ru/user/1.html) то мне нужно чтобы сервер НЕ изменяя URL (пользователь должен всегда оставаться на том URL с которого он пришёл, если я сам в PHP/JS не решу иначе) вместо попытки обращения к директориям ru и user и поиска там файла 1.html сразу перенаправил запрос на index.php?get=/ru/user/1.html а на стороне PHP я уже сам смогу определить что делать дальше с этим URI из $_GET['get']
Такое можно прописать на Apache или nginx или nginx unit?
Ну или какие-нибудь иные соображения как можно эффективно организовать ЧПУ маршрутизацию без mod_rewrite?