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