Je dois vérifier si un fichier particulier existe sur un serveur distant. Utiliser is_file()
et file_exists()
ne fonctionne pas. Des idées comment faire ceci rapidement et facilement?
vous devez utiliser CURL
function is_url_exist($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($code == 200){
$status = true;
}else{
$status = false;
}
curl_close($ch);
return $status;
}
Vous n'avez pas besoin de CURL pour cela ... Trop de frais généraux simplement pour vouloir vérifier si un fichier existe ou non ...
Utilisez PHP get_header .
$headers=get_headers($url);
Puis vérifiez si $ result [0] contient 200 OK (ce qui signifie que le fichier est là)
Une fonction permettant de vérifier si une URL fonctionne peut être la suivante:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
/* You can test a URL like this (sample) */
if(UR_exists("http://www.amazingjokes.com/"))
echo "This page exists";
else
echo "This page does not exist";
Je viens de trouver cette solution:
if(@getimagesize($remoteImageURL)){
//image exists!
}else{
//image does not exist.
}
Source: http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/
Selon notre test entre 2 serveurs différents, les résultats sont les suivants:
utiliser curl pour vérifier 10 fichiers .png (environ 5 mb chacun) était en moyenne de 5,7 secondes .
Donc, lors de notre test, le curl était beaucoup plus rapide si vous deviez vérifier des fichiers plus volumineux!
notre fonction curl est:
function remote_file_exists($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if( $httpCode == 200 ){return true;}
return false;
}
voici notre exemple de contrôle d'en-tête:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
Faites une requête avec curl et voyez si elle retourne un code d'état 404. Effectuez la demande à l'aide de la méthode de requête HEAD afin qu'elle ne renvoie que les en-têtes sans corps.
Vous pouvez utiliser la fonction file_get_contents ();
if(file_get_contents('https://example.com/example.txt')) {
//File exists
}