Accueil > > > CONNAITRE L'EXISTANCE D'UN FICHIER SUR UN SERVEUR HTTP EXTERNE
CONNAITRE L'EXISTANCE D'UN FICHIER SUR UN SERVEUR HTTP EXTERNE
Information sur la source
Description
Bonjour à tous. (Nota : Je n'ai pas trouvé de fonctions similaires, si c'est le cas, veuillez m'en excuser) L'idée, c'est de tester l'existence d'un fichier sur un serveur http afin de l'ouvrir apres. En effet, si vous faites un fopen ('http://www.domain.tld/mon_fichier.xml', 'r'); et que le fichier n'existe pas, la fonction fopen va tourner pendant toute la durée du Max Execution Time. Afin de ne pas perdre de temps, j'ai fait une petite fonction qui permet de retourner un boolean disant si le fichier demandé existe. Voila la source :
Source
- <?php
- function online_file_exist ($sUrl, $iPort = 80) {
- if (!is_string ($sUrl)) { // Si le premier paramètre n'est pas un String
- die ('Invalide paramètre. Le premier paramètre doit être un String');
- // ou throw new exception ('...'); au choix
- }
- else if (!is_int ($iPort)) { // Si le second paramètre n'est pas un entier
- die ('Invalide paramètre. Le second paramètre doit être un entier');
- // ou throw new exception ('...'); au choix
- }
- else { // Sinon
- // On récupere la valeur du serveur
- preg_match ('#\/\/(.*)\/(.*)#', $sUrl, $sUrlInfo);
-
- // Le Serveur
- $sServerName = $sUrlInfo[1];
-
- // Le fichier demandé
- $sFilePath = $sUrlInfo[2];
-
- // On ouvre le socket
- if (($rSock = @fsockopen($sServerName, $iPort)) === false) {
- die ('Impossible d\'ouvrir '.$sServerName.'. Le server n\'est pas accessible');
- // ou throw new exception ('...'); au choix
- }
-
- // On envoie la requete de demande de fichier
- $sRequest = 'GET /'.$sFilePath.' HTTP/1.1'."\r\n";
- $sRequest .= 'Host: '.$sServerName."\r\n";
- $sRequest .= 'Connection: Close'."\r\n\r\n";
-
- if (!@fwrite ($rSock, $sRequest)) {
- die ('Impossible d\'envoyer la requête !');
- // ou throw new exception ('...'); au choix
- }
-
- // On récupere la réponse
- $sHttpResponse = @fgets($rSock, 128);
- // et on ferme la resource
- @fclose($rSock);
-
- // Si la réponse est bonne (200), alors on retourne true, sinon false;
- if (strpos ($sHttpResponse, '200') !== false)
- return true;
- else
- return false;
- }
- }
- ?>
<?php
function online_file_exist ($sUrl, $iPort = 80) {
if (!is_string ($sUrl)) { // Si le premier paramètre n'est pas un String
die ('Invalide paramètre. Le premier paramètre doit être un String');
// ou throw new exception ('...'); au choix
}
else if (!is_int ($iPort)) { // Si le second paramètre n'est pas un entier
die ('Invalide paramètre. Le second paramètre doit être un entier');
// ou throw new exception ('...'); au choix
}
else { // Sinon
// On récupere la valeur du serveur
preg_match ('#\/\/(.*)\/(.*)#', $sUrl, $sUrlInfo);
// Le Serveur
$sServerName = $sUrlInfo[1];
// Le fichier demandé
$sFilePath = $sUrlInfo[2];
// On ouvre le socket
if (($rSock = @fsockopen($sServerName, $iPort)) === false) {
die ('Impossible d\'ouvrir '.$sServerName.'. Le server n\'est pas accessible');
// ou throw new exception ('...'); au choix
}
// On envoie la requete de demande de fichier
$sRequest = 'GET /'.$sFilePath.' HTTP/1.1'."\r\n";
$sRequest .= 'Host: '.$sServerName."\r\n";
$sRequest .= 'Connection: Close'."\r\n\r\n";
if (!@fwrite ($rSock, $sRequest)) {
die ('Impossible d\'envoyer la requête !');
// ou throw new exception ('...'); au choix
}
// On récupere la réponse
$sHttpResponse = @fgets($rSock, 128);
// et on ferme la resource
@fclose($rSock);
// Si la réponse est bonne (200), alors on retourne true, sinon false;
if (strpos ($sHttpResponse, '200') !== false)
return true;
else
return false;
}
}
?>
Conclusion
Note : Vous devez avoir les sockets d'activés pour utiliser cette fonction !
Après je suis ouvert à toute proposition de fonction existant déjà (:/ lol), ou plus performante :)
Historique
- 05 octobre 2007 14:23:20 :
- Rajout des tags <?php ?> dans le code :p
- 05 octobre 2007 14:24:56 :
- Modification du titre
- 05 octobre 2007 23:52:09 :
- Suppression des returns inutiles
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
upload fichier socket [ par yvesyves ]
Bonjour,Je m'explique en tant que passagé car je programme pas en php mais je le comprend :J'ai 2 formulaires html avec un bouton submit et un champ d
protections de fichiers derriere allopass [ par seabird ]
Bonjour, Je suis actuellement en train de faire le site d'un groupe de musique sur lequel les morceaux seront vendus derriere allopass. j'utilise donc
insertion failed [ par vinz78 ]
<?php$nomlabo=$HTTP_POST_VARS['Nomlab'];$idlabo=$HTTP_POST_VARS['id_labo'];$nomcont=$HTTP_POST_VARS['nom_cont'];$telephonecont=$HTTP_POST_VARS['tel
demande formulaire info [ par zert92 ]
bonjour, J'explique, j'ai crée avec les moyens que je connais se site http://525-tds-e39.legtux.org/e39.html je suis hebergée chez http://www.legt
syntaxe preg_match [ par boakim ]
Bonjour. J'essaie de comprendre la manière d'écrire des conditions pour une chaîne de caractères du style #^http:\/\/(.*)\.(gif|png|jpg)$#i dans pr
requete HTTP : echec de socket_read() [ par supers03 ]
Bonjour à tousJ'utilise depuis un certain temps un même script pour envoyer/recevoir des requêtes HTTP (socket_create, conenct, write, etc...) jusqu'à
Extraire des informations d'un fichier texte [ par med93100 ]
Bonjour la compagnie , Je tiens deja à vous dire que je suis débutant en PHP , donc mon prolbème est la , j'ai un texte avec plein de code html par e
Lire des données d'un fichier rdf [ par tibine974 ]
Bonjour/Bonsoir à tous et toutes !Voilà je veux lire certaines données d'un fichier rdf, mais je bloque, si quelqu'un pouvait m'aider svp !Fichier rdf
Question templates [ par astuces_jeux ]
Bonjour,J'ai remarqué que l'utilisation de la class fasttemplate est compliquée. Alors je voulais savoir si on ne pouvait pas faire ça simple : foncti
suprimer les doublon d'un fichier texte [ par marco2003 ]
Bonjour ,Je suis debutant et j'aurais besoin de suprimer le doublons d'un fichier texte sur mon serveur .les fichier a la forme suivante :http://le-c
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|