С PHP (и Apache, я полагаю) это намного проще, чем с некоторыми другими настройками (например, с необходимостью перезапуска процессов). В идеале у вас должна быть система, которая знает, как передавать только измененные файлы (например, rsync).
Я использую Springloops (http://www.springloops.com/v2/) для размещения моего git-репозитория и автоматического развертывания по [S /] FTP. Если у вас нет тысяч файлов, развертывание выглядит почти мгновенным.
Если вы действительно хотите, вы можете иметь файл .htaccess (или эквивалентный) для перенаправления на страницу «на обслуживании» во время развертывания. Если вы не усредняете по крайней мере несколько запросов в секунду (или это иное критически важно), вам может даже не понадобиться этот шаг (не оптимизируйте преждевременно!).
Если бы это был я, у меня был бы файл .htacess, содержащий инструкции по перенаправлению, и я настроил бы его на перенаправление только в часы вашего обслуживания. Если у вас нет предстоящего развертывания, переименуйте файл в «.htaccess.bak» или что-то в этом роде. Затем в вашем PHP-скрипте:
<?php if (file_exists('/path/to/.htaccess')) : ?>
<h1 class="maintenance">Our site will be down for maintenance...</h1>
<?php endif; ?>
Затем, чтобы ДЕЙСТВИТЕЛЬНО проявить фантазию, настройте ловушку Springloops перед развертыванием, чтобы убедиться, что перенаправление обслуживания настроено, и ловушку после развертывания, чтобы вернуть ее обратно в случае успеха.
Просто некоторые мысли.
-Landon