Foros del Web » Programando para Internet » PHP »

Problemas con la funcion file_get_contents

Estas en el tema de Problemas con la funcion file_get_contents en el foro de PHP en Foros del Web. Hola compañeros foreros. Estoy teniendo un problema de control con la libreria file_get_contents, el problema especificamente es que cuando falla la lectura del archivo debiera ...
  #1 (permalink)  
Antiguo 17/04/2011, 06:30
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 20 años
Puntos: 145
Problemas con la funcion file_get_contents

Hola compañeros foreros.

Estoy teniendo un problema de control con la libreria file_get_contents, el problema especificamente es que cuando falla la lectura del archivo debiera retornarme false segun la documentacion de PHP, pero no siempre ocurre, hay veces en que simplemente arroja un warning en pantalla

<b>Warning</b>: file_get_contents(https://graph.facebook.com/101501368...iBn5n0yTyGSRtQ) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: Connection timed out in <b>/home/perfil/public_html/librerias/importar.php</b> on line <b>278</b><br />


Lo que hago es rescatar un archivo json que m entrega facebook para luego tratar esa info con php, pero lo que no logro es manejar los errores, puse un if para trabajar con el contenido y en caso de que la funcion file_get_contents me arroje false, pues en ese caso no hago nada, solo arrojo un mensaje por pantalla, pero lo raro es q no siempre me arroja el false en ocaciones simplemente lanza el warning por pantalla.

Alguien conoce un poco mas este tema y como evitar esos warning por pantalla y obtener el control 100% de los errores?

saludos y gracias por tu atencion.
__________________
http://chicho.ninja yiaaaa
  #2 (permalink)  
Antiguo 17/04/2011, 07:07
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Problemas con la funcion file_get_contents

en cuanto esperas un archivo desde una caja negra
lo que tenes que hacer es:
ir llamando el archivo json hasta que se abre,
si en un determinado tiempo no se abre recien mostrar el error y que siga.
por supuesto el usuario no quiere el error entonces en ves de un if
usa un try{ intento abrir el archivo}catch{ mensaje al usuario }

esto pasa por que esperas una refencia de un archivo de manera indirecta
que no se ejecuta en paralelo con la aplicacion php

como ayuda podes hacer

while(true){

try{ intento abrir el archivo}catch{ sigo intentando hasta cumplir algun lapso de tiempo o iteraciones }finally{ me rindo y muestro el mensaje}

}

y cuando logro abrir el archivo: return false para salir o un break
  #3 (permalink)  
Antiguo 17/04/2011, 07:46
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Problemas con la funcion file_get_contents

Que tal Cherivera,

hay varias formas de resolverlo, pero bueno, te dejo un par, podrías suprimir el mensaje con @(esto nunca es algo bueno, pero en fin te puede sacar de un apuro) y luego comprobar el resultado de file_get_contents:
Código PHP:
Ver original
  1. $url = '/***/';
  2. $response = @file_get_contents($url);
  3. if( ! $response) {
  4.     throw new Exception('/***/');
  5. }
  6. print_r($response);

otra opción seria setear el error handler antes de la llamada y luego hacer el restore:

Código PHP:
Ver original
  1.         '$severity, $message, $file, $line',
  2.         'throw new ErrorException($message, $severity, $severity, $file, $line);'
  3.     )
  4. );
  5.  
  6. try {
  7.    $response = file_get_contents($url);
  8.    print_r($response);
  9. } catch (Exception $e) {
  10.     echo $e->getMessage();
  11. }
  12.  

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 17/04/2011, 08:07
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 20 años
Puntos: 145
Respuesta: Problemas con la funcion file_get_contents

Woow muchas gracias muchachos, voy a implementar y les cuento.

saludos.
__________________
http://chicho.ninja yiaaaa
  #5 (permalink)  
Antiguo 19/04/2011, 08:23
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 20 años
Puntos: 145
Respuesta: Problemas con la funcion file_get_contents

bueno despues de investigar en base a la orientacion que me dieron he utilizado ambos metodos try{}catch{} y tambien el mas simple anteponiendo @ a file_get_contents y luego haciendo un simple if preguntando si es !false.

He tenido q adaptar ambos metodos ya que son diferentes script que tengo y en algunos me ha resultado mucho mas simple solo anteponer @.

Saludos y gracias
__________________
http://chicho.ninja yiaaaa
  #6 (permalink)  
Antiguo 19/04/2011, 08:53
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Problemas con la funcion file_get_contents

ponenos lo que hiciste asi esta la resolucion para otros

Etiquetas: file_get_contents
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:44.