2010-02-09 18 views
7

Zrobiłem prosty robot sieciowy przy użyciu PHP (i cURL). Analizuje okrutnie 60 000 stron HTML i odzyskuje informacje o produkcie (jest to narzędzie w intranecie).Jak ograniczyć równoczesne połączenia używane przez cURL

Moim głównym zmartwieniem jest połączenie równoległe. Chciałbym ograniczyć liczbę połączeń, więc cokolwiek się stanie, robot nigdy nie użyje więcej niż 15 równoczesnych połączeń.

Serwer blokuje IP po przekroczeniu limitu 25 równoczesnych połączeń IP iz jakiegoś powodu nie mogę tego zmienić po stronie serwera, więc muszę znaleźć sposób, aby mój skrypt nigdy więcej nie używał niż X równoczesnych połączeń.

Czy to możliwe?

A może powinienem przepisać całość w innym języku?

Dziękuję, każda pomoc jest doceniana!

Odpowiedz

5

dobrze można użyć curl_set_opt(CURLOPT_MAXCONNECTS, 15);, aby ograniczyć liczbę połączeń. Ale możesz również chcieć stworzyć prostego menedżera połączeń, jeśli nie zrobi tego za ciebie.

+1

Nie wiem, czy powinienem czuć się znany, czy wręcz głupi! Nie wiedziałem o tej opcji, ale wciąż przysięgam, że przeczytałem cały dokument cURL ... więcej niż raz! Nieważne, opublikuję mój wynik. Wielkie dzięki, przyjacielu! – josephdotca

0

Może napisać prosty stolik połączenia:

target_IP   | active_connections 

1.2.3.4     10 
4.5.6.7     5 

każdy Curl wezwanie by zwiększyć liczbę połączeń, każda szczelnie ją zmniejszyć.

Można przechowywać tabelę w tabeli mySQL lub Memcache dla prędkości.

Po napotkaniu adresu IP, który już ma swoje maksymalne połączenia, należałoby zaimplementować kolejkę "spróbuj później".

Powiązane problemy