PHP: запись в текущий файл

В настоящее время я работаю над системой обновления веб-приложений. Это будет работать как контроль версий, где главным сервером является репозиторий. Разница между моей системой и vc заключается в том, что вы не можете зафиксировать / отправить и т. Д. На главный сервер.

Итак, идея такова:

Пользователь заходит в админ> обновление

Проверяет наличие обновлений

Мастер репо отправляет обратно список всех файлов последней версии и их контрольные суммы

Приложение проверяет этот список по файлам на сервере. Если некоторые из них устарели / не совпадают с контрольной суммой, запросите их содержимое и перезапишите файлы на сервере.

У меня вопрос: а что, если сам файл обновления нуждается в обновлении... как мне его обновить? Смогу ли я перезаписать его, даже если он выполняется в данный момент? Или будет ошибка, и все это взорвется? Я бы предположил, что текущий файл хранится в оперативной памяти, поэтому он может перезаписать себя, но я не уверен.

Спасибо

1 ответ

Решение

Вот один из способов сделать это:

  • Разрешить обновление мастер-файлов только через страницу 'superadmin'
  • Создайте "реестр", в котором любая часть программы имеет к нему доступ (некоторые только для чтения, а некоторые для записи)
  • Когда файл обновляется через superadmin, он проверяет реестр, читается ли файл
  • Когда суперадмин обновляет любой файл, он устанавливает "реестр", говоря, что данный файл обновляется (фактически блокируя его)
  • Когда пользователь пытается обновить систему, он проверяет реестр, если файл установлен как "заблокированный", он не будет пытаться загрузить его
  • Когда пользователь может загрузить его, он устанавливает в реестре сообщение о том, что файл читается (и отключает его после завершения)
Другие вопросы по тегам