Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: icisneros en 7 Abril 2008, 22:02 pm



Título: Leer datos de otra página
Publicado por: icisneros en 7 Abril 2008, 22:02 pm
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:
Código:
$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:
Código:
$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:

Citar
Warning: 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

Código:
$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!!


Título: Re: Leer datos de otra página
Publicado por: eLank0 en 8 Abril 2008, 00:15 am
Hola,

En PHP existe la función file_get_contents(), devuelve una cadena, con el contenido del archivo especificado.
Código:
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


Título: Re: Leer datos de otra página
Publicado por: дٳŦ٭ en 8 Abril 2008, 03:59 am
Hazlo con cURL.


Título: Re: Leer datos de otra página
Publicado por: Hans el Topo en 8 Abril 2008, 12:16 pm
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


Título: Re: Leer datos de otra página
Publicado por: icisneros en 8 Abril 2008, 17:39 pm
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:

Código:
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
Código:
$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!


Título: Re: Leer datos de otra página
Publicado por: icisneros en 8 Abril 2008, 22:53 pm
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!