Leer datos de otra página

Iniciado por icisneros, 7 Abril 2008, 22:02 PM

0 Miembros y 1 Visitante están viendo este tema.

icisneros

Estoy programando una especie de robot en php que rastree determinadas páginas web y en caso de que encuentre el contenido que yo estoy buscando me envie un e-mail.

Para leer las otras páginas y analizar el código utilizo la funcion:

$html = implode('', file($enlace));


Esto funciona correctamente, el problema es que cuando analizo la web y contiene algún enlace que me interesa y ejecuto por segunda vez la función implode:

$html_enlace = implode('',file($enlace_articulo));


Muchas veces me falla, y actualizo la página y funciona, el problema es que este robot podrá seguir hasta 15 enlaces rastreando noticias.

El fallo que da es:

CitarWarning: file(http://www.xxa.es/ela) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /var/www/xxxa/lee.php on line 149

Warning: implode() [function.implode]: Bad arguments. in /var/www/xxxa/leeddn.php on line 149

Y la linea 149 es


$html_enlace = implode('',file($enlace_articulo));


Y esta linea realmente está bien programada porque hay veces que funciona, pero por alguna cosa el servidor falla al hacer la petición http algunas veces.

He pensado que como meto todo el codigo html dentro de las variables, igual superaba la memoria de php, pero he probado a crear funciones para liberar las variables despues de leer la página y me sigue fallando.

¿alguna idea?

Un saludo!!

eLank0

Hola,

En PHP existe la función file_get_contents(), devuelve una cadena, con el contenido del archivo especificado.

string file_get_contents  ( string $nombre_archivo  [, int $banderas  [, resource $contexto  [, int $desplazamiento  [, int $long_max  ]]]] )


Más info: http://www.php.net/file_get_contents

Salu2

дٳŦ٭



Con sangre andaluza :)


Hans el Topo

hace poco agrupé unos cuantos métodos para acceder a contenido remoto desde php xD

te dejo link
http://blog-indomita.blogspot.com/2008/03/6-metodos-para-abrir-direcciones-web.html
 

icisneros

Gracias por vuestra ayuda, al final pasando parte de los procesos a funciones se ha solucionado el problema, seguramente estaría sobrepasando la memoria de php del servidor, así que al pasarlo a funciones como al terminar libera las variables no falla nunca  ;D

Ahora tengo otro problema que me está rompiendo la cabeza:


echo $linea;

$html_articulo = implode('', file($linea));

echo $html_articulo;


$linea contiene una linea que leo de un documento de texto con una dirección de una página, entonces se supone que en $html_articulo debería cargar el código html de la dirección de la página, pero no funciona.

En cambio si antes de esto, añado la dirección que me devuelve echo $linea; en la variable $linea si que funciona; pero claro no me sirve porque esto va dentro de un bucle y cada vez debe leer una url diferente.

He pensado que igual al leer en linea la linea del documento de texto con
$linea = fgets($fichero_configuracion, 500);
tal vez $linea en lugar de ser una string normal, es otro tipo o algo raro y por eso no lo coge.

Alguna idea?

Un saludo!

icisneros

SOLUCIONADO:

Había un carácter en blanco al final de la url en $linea, así que la depuré así:

$linea_depurada = trim($linea);

y ya todo ok, gracias a todos!

Un saludo!