TGViewer
Пятиминутка PHP Пятиминутка PHP @tg_5minphp · 2.79K subscribers
Post #790 480
Классический способ публикации PHP проектов: имеем текущую версию кода в некоей директории директории /app/version1 и символическую ссылку /app/current -> /app/version1.

Настройки nginx таковы, что код запускается из /app/current (т.е. по символической ссылке).

Пришло время вложить новую версию: заливаем на сервер в директорию /app/version2 и после этого переключаем символическую ссылку /app/current -> /app/version2.

Атомарно? Не факт!

Есть несколько дополнительных факторов, которые нужно учитывать при деплое:
- OPCache
- realpath_cache
- А начиная с PHP 7.4 ещё и preload

И сразу возникают вопросы:
- Нужно ли делать сброс OPCache при такой схеме деплоя с двумя директориями и символической ссылкой? А если нужно, как это сделать правильно: php-fpm restart vs php-fpm reload vs gordalina/cachetool?
- Нужно ли сбрасывать realpath_cache или достаточно использовать $realpath_root в настройках nginx?
- Приводит ли php-fpm reload к сбросу realpath_cache?
- А если используем preload (PHP 7.4+), то выходит в любом случае придётся делать php-fpm reload? Или php-fpm restart?

Сознательно опускаю вопросы миграции базы данных и специфичные кеширующие механизмы тех или иных фреймворков.

Что рекомендую прочитать:

1. Не плохая статья-расследование с заголовком «Во всём виноват PHP OPCache?» http://amp.gs/cPeI
Спойлер: в этом случае OPCache не виноват, проблема была в realpath_cache

2. Подробности про работу realpath_cache: http://amp.gs/cPej

3. 5 способов деплоя PHP-кода в условиях хайлоада: http://amp.gs/cPeT
В этой статье специфика проекта, с которой вряд ли придётся столкнуться 99% разработчикам: «2 000 серверов, на которых 150 000 файлов объемом по 900 Мб PHP-кода и стейджинг-кластер на 50 машин». Однако написано хорошо и, безусловно, есть полезная информация и для разработчиков обычных, не столь нагруженных проектов.

После прочтения данной заметки, возможно, у вас появилось ещё больше вопросов, чем было! Будем разбираться дальше.
Хабр Во всём виноват PHP OPCache? Когда я начинал карьеру разработчика, то очень удивился, прочитав фразу, которую приписывают Филу Карлтону (Phil Karlton): «В информатике есть лишь две сложности: инвалидация кеша и присвоение...
More from @tg_5minphp
  1. Sep 28, 2026Запустили Пыхник и неделю PHP! Залетайте на первый открытый доклад от Дмитрия Dantes про к…
  2. Sep 10, 2026Пыхник’26 — целая неделя PHP! С 28 сентября по 2 октября пройдёт Пыхник’26 — онлайн-конфер…
  3. Jul 27, 2026Работа с Claude Code "в лоб": создай dynamic worflow, чтобы найти все баги, запиши их в BU…
  4. Jul 8, 2026Первый официальный State of PHP опрос открыт: https://jb.gg/php-survey-2026 В сообществе у…
  5. Jul 3, 2026Запустили краудфандинг!!! 11 сентября в Art Village под Москвой собираем небольшую PHP-кон…
  6. Jul 3, 2026Продано!
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →