Estoy haciendo un scrapping de 30000 paginas webs para probar una teoria, pero resulta que me está pasando algo que nunca me habia pasado, y me está pasando tanto en mac como en linux.
El file_get_contents o el curl consume una barbaridad de recursos y siempre me sale error de falta de memoria, y eso que ahora mismo le he dedicado en el php.ini 2000Mb para ese script..... Es una locura pero ni con esas, cada vez que va haciendo el bucle no libera la memoria usada para almacenar el codigo fuente o algo asi... :S
Para abrir las paginas ahora he pasado a usar curl, que consume un poco menos pero aun asi no para de consumir recursos.
Uso MacOs 10,5 y tb lo he probado en linux y en el monitor de actividad es alucinante ver como se consume la memoria y pasa a inactive memory.
Os pongo un ejemplo del tipo de curl que uso en una funcion para abrir las paginas:
Código PHP:
// Cuando necesitemos abrir una url externa
function abrir($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$code = curl_exec ($ch);
curl_close($ch);
return $code;
}
¿Deberia hacer un unset en la variable $code para vaciar esa variable? pero es que es absurdo por que como es un while luego la reescribe y borra lo que tubiera.
Alguna idea?