Классический способ публикации PHP проектов: имеем текущую версию кода в некоей директории директории /app/version1 и символическую ссылку /app/current -> /app/version1.
Настройки nginx таковы, что код запускается из /app/current (т.е. по символической ссылке).
Пришло время вложить новую версию: заливаем на сервер в директорию /app/version2 и после этого переключаем символическую ссылку /app/current -> /app/version2.
Атомарно? Не факт!
Есть несколько дополнительных факторов, которые нужно учитывать при деплое:
- OPCache
- realpath_cache
- А начиная с PHP 7...
Никита Попов, один из основных разработчиков PHP на сегодняшний день, написал статью в своём блоге с подробностями работы OPcache. Сделаю краткий. https://www.npopov.com/2021/10/13/How-opcache-works.html OPcahce — это расширение PHP, которое ускоряет работу за счёт кэширования опкодов. Напомню, что интерпретатор PHP сначала читает PHP файлы, парсит код, превращая его в набор токенов, затем в абстрактное синтаксическое дерево, а затем в набор опкодов. Опкоды — это инструкции для виртуальной машины PHP, для Zend Engine...