Метод PHP для передачи всего каталога с использованием FTP?

Я пытался придумать способ создания системы автоматического обновления для CMS, которую я создаю, которая потенциально будет установлена ​​на многих серверах (вероятно, с разными конфигурациями). Что я придумал, так это сохранить текущую версию, загруженную на мой сервер, в заранее определенном каталоге. Затем пусть распределенные системы проверяют этот каталог (на удаленном сервере) время от времени, чтобы увидеть, была ли загружена новая версия. Если номер версии загруженной версии больше, чем у конкретной системы, администратору будет предложено выполнить обновление. Затем файлы будут скопированы через FTP в каталог tmp, а затем будут скопированы из tmp для замены более старых версий каждого файла. затем каталог tmp удаляется, а номер версии системы увеличивается.

Проблема в том, что я не нашел способа передавать целые каталоги через PHP FTP. Я знаю, что могу заархивировать его и передать таким образом, но я не нашел надежного способа распаковать файлы в различных серверных средах.

Я знаю, что могу написать свой собственный метод, который будет просто проходить по каждому каталогу и передавать каждый файл по одному, и это нормально. Я просто хотел знать, писал ли уже кто-то что-то на этот счет, или знал ли кто-нибудь об альтернативном решении этой проблемы, прежде чем я углублюсь в это.

Спасибо за вашу помощь!


person seventeen    schedule 22.12.2009    source источник


Ответы (2)


Вместо отправки каталога, почему бы не заархивировать папку, чтобы сэкономить трафик и время? Затем разархивируйте на целевых серверах. удалено, так как это не подходило для операционной системы

Вы можете использовать архивы PHAR для своих развертывание приложения (если вы хотите быть на переднем крае современности)

Или вы можете написать сценарий обновления для Phing, который получает файлы с вашего сервера. Тогда вы могли бы даже делать проверки из SVN вместо того, чтобы помещать сборку в каталог.

person Gordon    schedule 22.12.2009
comment
правильно, я не хочу беспокоиться о том, что что-то будет установлено на этих серверах. Потенциально я не буду иметь никакого контроля или каких-либо сведений о том, где установлена ​​эта система. Я посмотрю на PHAR, просто потому, что я никогда не слышал о нем раньше, выглядит интересно. Но это будет зависеть от того, какая поддержка ему нужна на сервере. - person seventeen; 22.12.2009

Попробуйте использовать exec() для запуска lftp из командной строки:

/usr/bin/lftp -e 'o ftp://ftp.example.com/path/to/remote/directory && mirror --verbose && quit'

person Alf Eaton    schedule 22.12.2009