Заливщик файлов по ftp с поддержкой прокси

Александр14 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
09.02.2011

Нужен заливщик файлов по ftp с поддержкой прокси и установкой прав на определенные файлы

далее по тексту "скрипт" (script.php)

Архитектура скрипта должна быть следующей:

./

./ftps

..ftp.txt

..gftp.txt

..bftp.txt

./proxy

..p.txt

./out

..{date}.txt

./content

./tmp

log.txt

script.php

Папка ftps:

создаетса файл с названием ftp.txt в который добовляютса списком ftp сервера в следующем формате разделенные табуляцией (каждый с новой строки):

door|http://kukewol.uphero.com|kukewol.uphero.com|a557555:x1yrrq5|/public_html/

{siteD}|{siteURL}|{siteFTP}|{siteLP}|{siteP}

разделителем являетса "|" должно быть 5 секций разделенные между собой |

1-ая {siteD} секция имя папки которую должен создать скрипт на ftp и в которую будет заливатса весь контент

2-ая {siteURL} секция полный урл сайта

3-ая {siteFTP} секция сервер ftp к которому конектитса скрипт

4-я {siteLP} секция логин и пароль между ними разделитель ":" (login:passwd)

5-ая {siteP} секция это путь от корня сервера, в данном примере /public_html/, тоесть заходя на сервер скрипт должен сначало войти в эту папку и только потом уже отработать. Так же путь часто бывает "/" тоесть при входе скрипту уже не куда заходить не нужно а можно сразу отрабатывать задачу. Все эти параметры задаютса через 5 секцию и заранее извесны.

Так же стоит учесть что список ftp может быть маленьким но и может быть большым например 5000 серверов, во избежании зависания скрипта возможно имеет смысл небольшие списки до 500 шт загружать через форму свыше 500 заливать напрямую в папку скрипта.

файл gftp.txt сюда скрипт записывает сервера на которые удалось залить, сервера записываютса в том же формате что и в файле ftp.txt

файл bftp.txt сюда скрипт записывает сервера на которые по каким либо причинам не удалось залить (ошибки записываютса в файл log.txt)

Папка proxy:

в файл p.txt добовляем прямым заливом или через форму список прокси в формате ip:port прокси могут быть http или сокс (незнаю что лучше)

Скрипт для каждого ftp берет из этого файла прокси.

при ошибке соединения прокси удоляетса из файла p.txt и берется следующий до тех пор пока залив не произойдет.

Но так же необходимо оставить возможность работы скрипта без прокси серверов.

Папка out:

название файла {date}.txt должно содержать текущую дату заливки. этот файл создается после начала работы и в него записываютса данные из блока секции 1 и 2 в следующем формате:

{siteURL}/{siteD}/page.php?q=mysitemap , (тоесть как пример http://kukewol.uphero.com/door/page.php?q=mysitemap)

Папка content :

в папке контент лежат заранее подготовленные в ручную файлы есть постоянные папки и файлы есть непостоянные тоесть они могут быть удаленны или добавленные по необходимости, но скрипт должен заливать ВСЕ файлы которые находятса в папке content.

Постоянные:

папка cache

файл page.php

файл template.txt

файл key.txt

файл text.txt

файл page.php содержит мой php код в этом коде есть строка которая содержит полный путь скрипта, поэтому прежде чем заливать файлы скрипт должен добавить урл и создоваемую папку текущего ftp сервера на который будет производитса заливка,

для этого в файле page.php добавлен в нужное место оператор {siteURL} и {siteD}.

p.s Для того чтобы не заливать не исправленный файл page.php имеет смысл хранить его в другой папке как шаблон.

Процесс работы должен заключатся в следующем :

в скрипт добовляются ftp и proxy сервера в описанном выше формате.

При старте скрип берет первый ftp сервер в списке, парсит файл page.php на наличие ключей {siteURL} и {siteD} добовляет вместо них данные от ftp согласно описанного выше формата.

заходит в папку tmp проверяет пуста ли она если не пуста то все удоляет и записывает файл page.php с добавленными параметрами.

После этого заходит на сервер ftp по {siteP} проверяет есть ли папка {siteD} если есть удоляет ее и создает папку {siteD} если нет то создает {siteD} дает папке {siteD} права 777 (полное чтение исполнение)

заливает в папку {siteD} данные из каталога content и файл page.php из папки tmp

после заливки всех данных устанавливает права на папки и файлы находящиеся в {siteD}:

папка cache - 777

файл page.php - 755

файл temp.txt - 666

файл key.txt - 666

файл text.txt - 666

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

После установки прав записывает в папку out файл {date}.txt текущий залитый ftp согласно описанного выше формата.

После записи в файл {date}.txt берет следующий ftp сервер в списке, отрабатывает задание и добовляет результат в {date}.txt и так далее до конца списка ftp.

во время работы скрипта необходим какойнибуть индикатор прогресса, например {всего ftp:залито ftp:не залито ftp из за ошибки}

Так же необходимо сохронять в файл log.txt логи процесса чтобы в случае необходимости посмотреть в чем проблемма.

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

PS думаю что можно все папки и файлы заранее заархивировать и уже архивом заливать на ftp а там делать unzip тк все фришники с php будут 100% нужно обдумать этот вариант