Как добиться стабильной работы с FTP

Статус
В этой теме нельзя размещать новые ответы.

Abliganto

Постоялец
Регистрация
30 Ноя 2009
Сообщения
111
Реакции
47
Доброго времени суток, коллеги. Тема не совсем для начинающих.

Есть интересная задача, научить PHP нормально работать с FTP.

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

Умные люди подсказали что для загрузки файла используется отдельное соединение и пока файл загружается, основное соединение тухнет, после чего PHP пытается проверить по основному (закрытому сервером) соединению узнать результат загрузки и бреется.

Это в теории, может кто сталкивался на практике? Теоретически нужно проверить:

1) жив ли ещё сервер, если нет, переподключиться
тут можно отправить какую-нибудь команду на сервер, например, NOOP (интересно, можно-ли узнать открыто соединение или нет, есть ли в PHP общий пул текущих соединений?)

2) докачался ли файл, если нет, то докачать

Используются стандартные ф-ции ftp_* Для загрузки используется обычный или асинхронный режим с индикатором прогресса.

Какие есть мнения на даннй счёт? Больше интересует практический опыт, т.к. код мне написать не сложно и самому :)
 
Первая мысль — не использовать PHP, т.к. распараллеливание в PHP просто никакое.
 
Максимум что удалось наковырять по теме - использование stream* ф-ций. Но похоже они не дают больше возможностей чем сам ftp экстеншен.

Добавлено через 2 минуты
Первая мысль — не использовать PHP, т.к. распараллеливание в PHP просто никакое.
Внешний FTP клиент. Есть примеры для linux? Важна стабильность. Не важно чем заливать, главное чтобы быстро и стабильно (с докачкой в случае обрыва).

Но PHP решение всё равно будет сделано.
 
Максимум что удалось наковырять по теме - использование stream* ф-ций. Но похоже они не дают больше возможностей чем сам ftp экстеншен.

Добавлено через 2 минуты

Внешний FTP клиент. Есть примеры для linux? Важна стабильность. Не важно чем заливать, главное чтобы быстро и стабильно (с докачкой в случае обрыва).

Но PHP решение всё равно будет сделано.
Попробуйте fletch, либо любой другой неинтерактивный клиент.
С интерактивным вы всё равно ничего на PHP не добьётесь. Если, конечно, не научите PHP нормально работать с IO.
 
Попробуйте fletch, либо любой другой неинтерактивный клиент.
С интерактивным вы всё равно ничего на PHP не добьётесь. Если, конечно, не научите PHP нормально работать с IO.
К примеру для выкачки файлов я уже давно использую wget и огромные списки URL (> 100 к файлов), а потом PHP парсит результат - очень отлично работает. С фтп нужен лишь один ответ: закачался файл (true) или нет (false) :) По этому рассматривать можно только консольный вариант а-ля wget.

Жду ответов по теме :)
 
К примеру для выкачки файлов я уже давно использую wget и огромные списки URL (> 100 к файлов), а потом PHP парсит результат - очень отлично работает. С фтп нужен лишь один ответ: закачался файл (true) или нет (false) :) По этому рассматривать можно только консольный вариант а-ля wget.

Жду ответов по теме :)
Я вроде по русски написал — неинтерактивный фтп-клиент.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху