iZk
Новичок
ftp функции -- чтение первых N мегабайт из файла (ftp_*, sockets) вопрос
Задача: прочитать первые 10 мегабайт из N файлов.
Впринципе механизм работы через fopen ('ftp://...', 'r') очень даже шорошь. Открыл прочитал сколько надо, закрыл.
Но php не умеет работать с активными (PORT) соединениями, потому часть ftp серверов остается недоступной.
Казалось бы расширение php должно спасти. Но в нем нет возможности скачивать файл частично.
А вообще хочеться делать все это асинхронно, тоеть сразу с нескольких ftp. Вооружился socket_select и погнал изобретать велосипед. Написал свой класс. Довольно пахабно, работает, но мне не нравиться.
Так вот, уважаемые, может ктото имет на примете решение данного вопроса.
Вижу 3 (оптимальных) пути :
1. Найти внешнюю программу типа wget (с подержкой параметра ограничивающего закгрузку, т.е. фиксированный объем) и запускать в background процессы wget и смотреть раз в 10 секунд, например, выполняется ли процесс и достиг ли файл заданного размера в 10 Мб? Так вот таких программ я пока не нашел.
2. Все-таки найти реализацию ftp rfc 959 протокола на базе socket_* функций.
3. Использовать ftp_nb_continue, при этом писать данные в файл, а по достижению заданного размера прерывать процесс закачивания. А хотелось бы принимать данные в память, а не на диск.
Антон
Задача: прочитать первые 10 мегабайт из N файлов.
Впринципе механизм работы через fopen ('ftp://...', 'r') очень даже шорошь. Открыл прочитал сколько надо, закрыл.
Но php не умеет работать с активными (PORT) соединениями, потому часть ftp серверов остается недоступной.
Казалось бы расширение php должно спасти. Но в нем нет возможности скачивать файл частично.
А вообще хочеться делать все это асинхронно, тоеть сразу с нескольких ftp. Вооружился socket_select и погнал изобретать велосипед. Написал свой класс. Довольно пахабно, работает, но мне не нравиться.
Так вот, уважаемые, может ктото имет на примете решение данного вопроса.
Вижу 3 (оптимальных) пути :
1. Найти внешнюю программу типа wget (с подержкой параметра ограничивающего закгрузку, т.е. фиксированный объем) и запускать в background процессы wget и смотреть раз в 10 секунд, например, выполняется ли процесс и достиг ли файл заданного размера в 10 Мб? Так вот таких программ я пока не нашел.
2. Все-таки найти реализацию ftp rfc 959 протокола на базе socket_* функций.
3. Использовать ftp_nb_continue, при этом писать данные в файл, а по достижению заданного размера прерывать процесс закачивания. А хотелось бы принимать данные в память, а не на диск.
Антон