PHP: Verificando la existencia de archivos en URL

Publicado el 05 abril 2014 por Dracux @isladelmono

Estos días de mucho trabajo me encuentro con cosas que nunca había hecho pero que no parecen ser taaaaan complicadas (en este caso pasar XML a MySQL). Pero me encontré con algo más que interesante.

Resulta que el archivo XML no lo tenía localmente sino que era parte de un sitio de internet, o sea que solo lo veía a través de una URL. Entonces como primer paso para armar mi programa busqué ver que me diga si el archivo existe o no.

Mi primer intento fue hacer algo como esto:

if(is_file(http://wwww.xxxxxxxxxxxx.com/xxxxxxxx.xml)){
   echo "Archivo existente";
}else{
   echo "Archivo inexistente";
}

Lamentablemente la cosa no funcionó, el archivo existía y me daba como resultado “Archivo inexistente”.

Ok, busquemos, San Google lo sabe seguro.

Recemos:

Google nuestro que estás en la red,
multi-enlazado sea tu nombre,
venga a nosotros tu PageRank,
hágase tu voluntad tanto en Blogger como en WordPress.
Danos hoy nuestras visitas de cada día,
perdona nuestro spam,
así como nosotros perdonamos a los que nos spammean,
no nos dejes caer de tu indexación,
y libranos de todo ban.

Luego del rezo obtuvimos esto:

$filename= 'http://xxx.xxxxxxx.com/xxxxxx.xml';
$file_headers = @get_headers($filename);

if($file_headers[0] == 'HTTP/1.0 404 Not Found'){
      echo "El archivo $filename no existe";
} else if ($file_headers[0] == 'HTTP/1.0 302 Found' & $file_headers[7] == 'HTTP/1.0 404 Not Found'){
    echo "El archivo $filename no existe y fui redirigido a un 404";
} else {
    echo "El archivo $filename existe";
}

Espero que les sirva.

Saludos!