Récupérer un fichier distant s'il existe

 Un petit snippet en passant, entre deux mises à jour hagardes de SnippetVamp: une fonction qui permet de récupérer un fichier distant et en même temps de tester son existence...

Quand on veut vérifier l'existence d'un fichier distant, is_file gloubiboulgate gentiment et si on s'en file_get_contente, il renvoie une erreur en cas de fichiers absent... (si si, relisez cette phrase plusieurs fois, vous devriez parvenir à la saisir au bout d'une dizaine de tentatives)

La fonctions ci-dessous permet de récupérer un fichier distant mais ne génère pas d'erreur en cas d'échec: elle retourne simplement false...


❝ 5 commentaires ❞

1  jerrywham le

Merci pour le partage. C'est vrai que curl est bien pratique.
Pour info, le numéro de version de snippetvamp sur ton site (beta 1.6) n'est pas celui du fichier sur github (beta 1.5b). Une notification de mise à jour s'affiche donc de façon erronée.


HS:Check tes emails...

 
2  Bronco le

je teste des trucs, du coup, j'oublie certaines modifs !! Argh !

 
3  JeromeJ le

MINECRAFT!!!!


Oups, pardon!


Je pense qu'il y a moyen de faire "plus simple" :) c'est ce que j'ai utilisé sur PickyPaste (à peu près, à vérifier donc ).


function getDistant($URL)
{
set_error_handler(function($errno, $errstr){throw new Exception($errno);});


try

{
$return = file_get_contents($URL);
}
catch(Exception $e)
{
$return = false;
}


restore_error_handler();

return $return;

}


À partir de PHP 5.5, y a l'ajout du mot clé finally qui pourrait rendre le tout plus compacte mais je ne sais pas s'il s'exécute même après un return (la doc ne dit rien).

 
4  JeromeJ le

Au fait dans ta fonction, tu peux juste faire return $data; non ? Vu que, selon le manuel, curl_exec retourne le contenu ou FALSE si l'option CURLOPT_RETURNTRANSFER est activée.

 
5  Bronco le

C'est sans doute vrai... je vérifie et je mets à jour ;)

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le troisième caractère du mot hbspfgqz ?