• Как лучше изменять php-файлы на рабочем проекте?

    @xtreme
    Снимаю порчу по SSH :)
    Когда заливаете через CMS, файл по сути заливается во временный файл, а затем происходит move, который, в случае, если временный файл и целевой находятся на одном разделе файловой системы является атомарным (т.е. либо в один момент времени это старый файл, либо новый), либо, если происходит move между разделами - все равно происходит очень быстро.
    В случае, когда вы заливаете по ftp - сначала удаляется старый файл, т.е. он становится недоступным, а затем уже начинает подливаться новый. В этот момент и происходит "лажа".
    Выходов несколько:
    - про первый (не сказал бы, что он очень простой, но все равно довольно эффективный), вам уже написал D' Normalization во втором пункте.
    - второй - разливать файлы не по фтп, а, допустим, с помощью rsync из некоей директории, куда вы уже заливаете по ftp. То бишь - залили, проверили, что ничего больше заливать не надо - запустили на сервере rsync из этой директории в продакшн. rsync также копирует различающиеся файлы сначала во временный файл, а затем "мувит" на постоянное место.
    - третий - может быть с косяками, использовать, например, opcache в PHP и выставить в параметрах opcache не трогать файл, пока он не состарится, например, на несколько секунд. Секунды определяются эмпирически, в зависимости от скорости вашей заливки.
    - четвертый... а фиг знает, придумать можно много всего. Например, хранить файлы в SVN или GIT-репозитории, и по commit/push запускать post-hook, который, например, будет синхронизировать файлы тем же rsync или использовать какой-нибудь Jenkins... масса вариантов, главное не трогать самому файлы продакшна.
    Ответ написан
    Комментировать
  • Как лучше изменять php-файлы на рабочем проекте?

    Denormalization
    @Denormalization
    Ой насоветовали..
    Существует 2 простых варианта апдейта:
    1) Вешаем плашку "Усё пропало. Мы на ремонте.", и пока пользователи в шоке - делаем апгрейд.
    2) Учимся использовать симлинки. В соседней папке разворачиваем обновленный проект, и ловким движением руки переключаем симлинк на другую папку.

    Если есть много всяких "страшных" способов, но эти два наиболее просты и эффективны.
    Ответ написан
    Комментировать