Заливщик файлов по ftp с поддержкой прокси
Нужен заливщик файлов по 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% нужно обдумать этот вариант