Многопоточная провека большого кол-ва адресов

Fludimir

Новичок
Многопоточная провека большого кол-ва адресов

Возникла необходимость максимально быстро проверить относительно большой набор ссылок - добавляю сайт в какой-то каталок, получаю все ссылки с сайта - и нужно например проверить не битые ли эти ссылки, или являются ли они редиректами, т.е. получить и обработать заголовок ответа.
В общем то задача несложная, курл рулит, еще более рулят различные обертки над ним, но время проверки ссылок огорчает, скажем для ста ссылок время их проверки - 10-15 секунд, которые пользователь ждет а скрипт висит в памяти, не то чтобы страшно но неприятно. Попробовал использовать курл_мульти - практически на любом кол-ве ссылок (от 10 до 500) время мульти-проверки меньше последовательного примерно в два раза, как-то ожидал несколько большего. При этом на больших количествах ссылок необходимо значительно увеличивать время таймаута (при 300 ссылках и 10сек таймауте большая часть соединений закрывается по таймауту), что в общем не есть хорошо
На своей машине - для большого кол-ва урлов время мульти-проверки меньше раз в пять-десять, а вот на сервере - всего вдвое.
Что же является бутылочным горлышком на сервере, имеет смысл пробовать какие-то другие инструменты - например запустить курл/вгет отдельным процессом, или работать через сокеты, или выше этого особо не прыгнешь?

А еще интересно есть ли удобные инструменты для многопоточной работы с урлами, аналогичные пеар-овским HTTP_* пакетам? Нашел только gCurlMulti, здесь на форуме, как обертку над курл_мульти, соответственно быстрее она работать не будет, да и интерфейс не очень понравился
 

mity

Новичок
Будите этим увлекаться и можете получите бан от хостера.
Или у Вас VPS/личный сервер?
 

mity

Новичок
Тогда сравните количество TCP соединений и скорость передачи/приёма на своей машине и на сервере.
Может быть тормоза из-за DNS?
 

Fludimir

Новичок
На моей машине время получения одного единственного ответа от сервера - 2-3 секунды, на сервере - меньше секунды, таки домашный интернет имеет гораздо большие задержки чем сервер у хостера недалеко от точки обмена трафиком
При проверке сотни страниц с одного сайта врядли днс может вызывать тормоза, а картина примерно одинаковая что для страниц одного сайта что для разных сайтов
 

mity

Новичок
Установите на своей машине VMWare или VirtualBox. В ней поставьте сервер с ПО аналогичному вашему VPS серверу и сравните быстродействие.
 
Сверху