Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
- open (URLS, 'urls3.txt');
- my @urls = <URLS>;
- chomp @urls;
- close(URLS);
- open (PROXY, 'proxy.txt');
- my @proxy = <PROXY>;
- chomp @proxy;
- close(PROXY);
- my $l = @urls;
- my $forker = Parallel::ForkManager->new(20);
- for (my $i = 0; $i < @proxy; $i++) {
- $forker->start and next;
- print $urls[$i % $l],"
- "," PROXY: ",$proxy[$i],"
- ";
- $ua = new LWP::UserAgent();
- $ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
- $resp = $ua->request(GET "$urls[$i % $l]");
- open(ARCHIVO,">>libros.txt");
- binmode ARCHIVO;
- print ARCHIVO $resp->{_content},"
- ",$proxy[$i];
- close(ARCHIVO);
- $forker->finish;
- };
Lo estoy ejecutando con una conexión directa, como se ve en el script, no incluyo la ejecución de proxies.
En mi lista de proxies, tengo una larguísima recopilación de ellos.
El script funciona como quiero, pero después de un rato marca el siguiente error:
Using text Syntax Highlighting
Cannot fork: Resource temporarily unavailable at C:/Perl/site/lib/Parallel/ForkManager.pm line 472.
He intentado esquivar el error de varias formas:
* bajando la velocidad la velocidad ForkManager->new(5)
(al bajar la velocidad consigo más respuestas pero al final termina por salir el mismo mensaje)
* incluyendo sleep() en el script para relajar la descarga (con esto no consigo nada)
* probando con versiones anteriores del archivo ForkManager.pm
... pero no consigo pasar toda la lista de proxies.
¿¿Alguien me puede ayudar a esquivar este error si es que se puede??
Un saludo