PHP: запись в текущий файл
В настоящее время я работаю над системой обновления веб-приложений. Это будет работать как контроль версий, где главным сервером является репозиторий. Разница между моей системой и vc заключается в том, что вы не можете зафиксировать / отправить и т. Д. На главный сервер.
Итак, идея такова:
Пользователь заходит в админ> обновление
Проверяет наличие обновлений
Мастер репо отправляет обратно список всех файлов последней версии и их контрольные суммы
Приложение проверяет этот список по файлам на сервере. Если некоторые из них устарели / не совпадают с контрольной суммой, запросите их содержимое и перезапишите файлы на сервере.
У меня вопрос: а что, если сам файл обновления нуждается в обновлении... как мне его обновить? Смогу ли я перезаписать его, даже если он выполняется в данный момент? Или будет ошибка, и все это взорвется? Я бы предположил, что текущий файл хранится в оперативной памяти, поэтому он может перезаписать себя, но я не уверен.
Спасибо
1 ответ
Вот один из способов сделать это:
- Разрешить обновление мастер-файлов только через страницу 'superadmin'
- Создайте "реестр", в котором любая часть программы имеет к нему доступ (некоторые только для чтения, а некоторые для записи)
- Когда файл обновляется через superadmin, он проверяет реестр, читается ли файл
- Когда суперадмин обновляет любой файл, он устанавливает "реестр", говоря, что данный файл обновляется (фактически блокируя его)
- Когда пользователь пытается обновить систему, он проверяет реестр, если файл установлен как "заблокированный", он не будет пытаться загрузить его
- Когда пользователь может загрузить его, он устанавливает в реестре сообщение о том, что файл читается (и отключает его после завершения)