Как ограничить параллельные соединения, используемые ЗАВИХРЕНИЕМ

Я сделал простой поисковый робот с помощью PHP (и ЗАВИХРЕНИЕ). Это анализирует примерно 60 000 страниц HTML, и получите информацию о продукте (это - инструмент на интранет).

Мое основное беспокойство является параллельным соединением. Я хотел бы ограничить количество соединения, таким образом, что бы ни случилось, поисковый робот никогда не будет использовать больше чем 15 параллельных соединений.

Сервер блокирует IP каждый раз, когда предел 25 параллельных соединений IP достигнут и по некоторым причинам, я не могу изменить это на стороне сервера, таким образом, я должен найти способ заставить мой сценарий никогда не использовать больше чем X параллельных соединений.

Действительно ли это возможно?

Или возможно я должен переписать все это на другом языке?

Спасибо, любая справка ценится!

7
задан josephdotca 16 February 2010 в 16:57
поделиться

2 ответа

ну, вы можете использовать curl_set_opt (CURLOPT_MAXCONNECTS, 15); , чтобы ограничить количество подключений. Но вы также можете создать простой диспетчер соединений, если он вас не устраивает.

5
ответ дан 7 December 2019 в 12:19
поделиться

Может быть, написать простую таблицу соединений:

target_IP           |   active_connections

1.2.3.4                 10
4.5.6.7                 5

каждый вызов curL будет увеличивать количество соединений, каждое закрытие уменьшать его.

Вы можете сохранить таблицу в таблице mySQL или в Memcache для повышения скорости.

Когда вы сталкиваетесь с IP-адресом, который уже имеет максимальное количество подключений, вам придется реализовать очередь «попробуйте позже».

0
ответ дан 7 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: