Загрузка большого числа файлов с определенного сервера.

warobushek

Новичок
Здравствуйте. Я хочу загрузить порядка 1000 изображений (общим объемом порядка 30МБ).
Сделал это с помощью fsockopen в цикле for . Получилось довольно долго (порядка часа).

Появился вопрос:
У того сервера, с которого я скачиваю есть ограничение по числу/частоте запросов с одного IP?
Подскажите пожалуйста удобную программку или средство для определения таких ситуаций.

Thanks in advance :)
 

Alien85

I like my cat
Интересно, а почему вы не используете простые функции: copy, file_get_contents?
Для чего вам fsockopen?

А по теме: у меня на 100 мегабитном канале и впс-ке обрабатывается порядка 100 фотографий (50 МБ) в минуту (с учетом пережима фоток в 5 размеров).
Скорее всего или у тебя канал слабый или ты не договорил, что сначала этим же скриптом грабишь сайт.

У того сервера, с которого я скачиваю есть ограничение по числу/частоте запросов с одного IP?
А у меня день рождения 5 июня?

Подскажите пожалуйста удобную программку или средство для определения таких ситуаций
МОЗГ!
 

iceman

говнокодер
а кое кому нужно яица оторвать за содействие в воровстве.
 

warobushek

Новичок
можете не волноваться, это не воровство, сайт с которого будет такая скачка предоставляет платную телепрограмму, в которой довольно много иллюстраций.

кстати, как думаете , стоит ли в моем случае использовать stream_socket_client + stream_select?
Или 1000 картинок не так и много?
 

tz-lom

Продвинутый новичок
warobushek
для заморочек с куками есть curl
а качать надо в несколько потоков сразу, curl это умеет
 

warobushek

Новичок
curl действительно умеет, спасибо.
Попробовал еще и через stream_socket_client - в денвере не работает, что странно. Запускал через phpED - работает, на хостинге работает.
вобщем, остановился на curl.
 

shelestov

я тут часто
warobushek
для заморочек с куками есть curl
а качать надо в несколько потоков сразу, curl это умеет
Полностью поддерживаю многопоточное скачивание.
Сам буду делать подобное на след.неделе, только картинок в 1000 раз больше :)

Еще как вариант можете сделать в один поток, но запускать скрипт несколько раз одновременно.
Например на каждое ядро процессора по экземпляру :)
 

tz-lom

Продвинутый новичок
shelestov
можно и больше чем одно ядро,основная нагрузка - сетевой канал а не CPU, в свою очередь канал может быть ограничен по скорости и не ограничен (ну или хотя бы больше чем количество CPU) по количеству одновременных соединений,8-10 потоков - в самый раз (ИМХО , это отсебятина,никаких тестов не проводил/читал/что-то ещё)
 

shelestov

я тут часто
shelestov
можно и больше чем одно ядро,основная нагрузка - сетевой канал а не CPU, в свою очередь канал может быть ограничен по скорости и не ограничен (ну или хотя бы больше чем количество CPU) по количеству одновременных соединений,8-10 потоков - в самый раз (ИМХО , это отсебятина,никаких тестов не проводил/читал/что-то ещё)
Если просто сохранять, то да канал и диск, если их обрабатывать, то еще и процессор.
Последний написанный мной демон грузил ядро на 100%. Запустил 16 процессов (по одному на ядро), вполне сносно отработали :)
 
Сверху