IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Arreter l'execution si l'appel a une API ne répond pas


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Août 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2003
    Messages : 111
    Points : 63
    Points
    63
    Par défaut Arreter l'execution si l'appel a une API ne répond pas
    Bonjour,

    Dans une de mes fonctions je fais appel à l'api de "http://ip-api.com/#"

    Hors j'ai l'impression que depuis ce matin ce site a des problèmes.

    Le fait que l'api ne réponde pas rend mes pages extrêmement longues à charger.

    Existe t'il un moyen de shunter cet appel si l'api n'a pas répondu au bout de 5 secondes par exemple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function LogMe()
    {
    	@$url = "http://ip-api.com/json/".$_SERVER[REMOTE_ADDR];
     
    	@$Request = file_get_contents($url);
    	@$result = json_decode($Request,true);
    	@$Ville = $result['city'];
    	@$Pays = $result['country'];
    	@$Fournisseur = $result['isp'];
    	@$Latitude = $result['lat'];
    	@$Longitude = $result['lon'];
     
    	$Source = "Direct";
    		if (isset($_SERVER['HTTP_REFERER']))
    			{
    			$Source = $_SERVER['HTTP_REFERER'];
    			}
     
    	@$Phrase = date('Y-m-d H:i:s') . " - $_SERVER[PHP_SELF] - $_SERVER[REMOTE_ADDR] - $Ville - $Pays - $Fournisseur - $Source \r\n";
    	$monfichier = fopen('log.txt', 'a+');
    	fputs($monfichier, $Phrase);
    	fclose($monfichier);
    }

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    vous pouvez rajouter un timeout à "file_get_contents" comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $options = [
        "http" => [
            "timeout" => 2,
        ],
    ];
     
    $contexte = stream_context_create($options);
     
    file_get_contents($url, FALSE, $contexte);

  3. #3
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Août 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2003
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    mathieu -> merci beaucoup, je viens de tester avec succès!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une fonction n'affiche pas le résultat
    Par Invité dans le forum Langage
    Réponses: 10
    Dernier message: 06/09/2011, 15h48
  2. Réponses: 4
    Dernier message: 12/05/2009, 11h12
  3. Erreur lors de l'appel d'une page executée avec AJAX
    Par jt-tronix dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2006, 18h56
  4. Réponses: 7
    Dernier message: 09/10/2006, 17h11
  5. Arreter l'execution d'une requete ?
    Par Olv_m dans le forum ASP
    Réponses: 2
    Dernier message: 13/10/2005, 23h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo