Web Developer On1x.com Игры как увлечение Видео–игры как хобби и увлечение. Новости игровой индустрии. Блог про видео–игры.
Dark Souls 2 видео игрового процессаDiablo 3 Reaper of Souls рецензия, стоит ли вернуться в игрувидео-трансляции по играм

Идея копирования сайта через php

Довольно часто требуется переносить сайт с одного фтп на другой. Вроде ничего сложного, копируешь к себе, потом закидываешь. Но вот, встречаешь 10 тысяч картинок по 100 килобайт и расстройству нет предела. Медленный интернет еще больше усугубляет проблему. Эта идея пришла ко мне при очередном переносе. И вот в чем она заключается:

На хост 1 закачивается php файл, который будет управлять процессом закачки файлов.

На хост 2 закачивается принимающий файл, который будет получать его(скорее всего даже запакованным через gzip), сохранять в нужные папочки и выставлять права доступа. Итого нам нужно разобрать путь к файлу, файл это или папка, права доступа и собственно, само содержание файла.

Первый управляющий скрипт должен разделять свою часть работы на:

1. Формирование списка папок(всего дерева), сохранения его в файл, можно как массив с правами доступа.

2. Формирование списка всех файлов, сохраняя путь, размер, права доступа и конечно же статус закачки(0 - не брали, 1 - поставили на закачку, 2 - закачали).

3. Передача списка папок принимающему скрипту, ожидаем от него результат работы, переходим на следующий шаг.

4. Открываем структуру списка всех файлов, берем первые 100, обходим их по-очереди и запускаем в отдельном процессе(можно проэмулировать стандартный get запрос к отправляющему скрипту с йд файла, с мгновенным закрытием сокета, это позволит отправить файл на закачку, и продолжить выполнение основного скрипта). Каждый файл отмечаем как отправляемый + дата отправки. Ждем 10 секунд, автообновляем окно, отправляем следующие 100 файлов. И так до тех пор пока не останется файлов с статусом 0. После этого будет обновляться лишь статус отправляемых файлов. И конечно же возможность отправить еще раз файлы с статусом 1(для исключения стандартных глюков). Выводим статус передачи всех файлов.

Принимаемый файл после получения файла и его сохранения сообщает get запросом обратно об успешном сохранении файла.

При любом чтении файла, лочим его, пока не закончим очередь операций и запись изменений.

В теории - идея отличная, избавляет перенос от третьего звена - веб мастера. Думаю, надо будет выделить на это время и написать прототип.


Да, я не нашел ничего подобного. Если есть софт, решающий это же, просьба написать в комментариях. Всем спасибо за внимание! :)


Дата записи: 30.01.2012 21:06
Собственные проекты:
GameCommunity.ru, GameSocial.Net (TV), ART-Talk.ru, Дград.инфо
On1x blog
my ip