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 :

tester une connexion avant un file()


Sujet :

Langage PHP

  1. #1
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut tester une connexion avant un file()
    bonjour,

    j'ai un petit script qui va chercher les infos sur des copieurs qui sont connectés en réseau.
    pour le moment j'en ai 26 mais le nombre ne peut qu'augmenter

    grace a la file(http://....) je recupere les infos je fais les traitements.

    cela marche très bien mais si plus de 2-3 copieurs sont indisponible, alors mon script foire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maximum execution time of 30 seconds exceeded
    normal vu qu'il n'arrive pas a se connecter

    donc je me demandais s'il y avait un moyen de faire un ping ou autre
    si quelqu'un a une idée ??

    merci beaucoup

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux utiliser fsockopen() avec lequel tu peux définir le timeout :
    http://fr.php.net/manual/fr/function.fsockopen.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    merci, je vais allez voir.

    mais cela permet-il de passer outre le souci des 30secs ?

    edit :

    arf en plus visiblement la connection a ete retabli entre les copieurs donc j'ai plus de messages d'erreurs

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Points : 36
    Points
    36
    Par défaut
    Pour t'affranchir de cette limite, tu dois modifier la directive max_execution_time. Tu peux le faire dans ton fichier php.ini, dynamiquement avec la fonction set_time_limit.

  5. #5
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    ok je vais voir
    merci

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Changer le max_execution_time n'est pas la solution.
    En effet le script va attendre inutilement pour chaque machine injoignable.
    Imaginons que mon premier copieur est en panne, je dois attendre le timeout de file() avant de pouvoir obtenir les infos pour les autres.

    le fsockopen() que je te proposais ne remplacait pas file() mais permettait juste de tester que ta machine etait joignable avant de lancer le file().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Changer le max_execution_time n'est pas la solution.
    En effet le script va attendre inutilement pour chaque machine injoignable.
    Imaginons que mon premier copieur est en panne, je dois attendre le timeout de file() avant de pouvoir obtenir les infos pour les autres.

    le fsockopen() que je te proposais ne remplacait pas file() mais permettait juste de tester que ta machine etait joignable avant de lancer le file().
    oui j'avais tres bien compris et je l'ai bien rajoute et non remplace.
    mais donc si cela ne change rien pour l'histoire des 30sec je fais quoi sachant que pour le moment l'appli est sur mon poste mais apres elle sera sur un serveur ou je ne pourrai pas modifier la config php.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans fsockopen() tu peux indiquer le timeout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if($fp = fsockopen($adresse, 80, $errno, $errstr, $timeout))
    {
        fclose($fp);
        file(......)
    }
    else {
        echo 'timeout';
    }
    Tu pourrais même tout faire avec les socket et ne pas utiliser file().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    ok merci
    par compte je vois pas trop comment je peux faire sans le file.

Discussions similaires

  1. Tester une connexion http
    Par nymus7 dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 25/04/2012, 10h26
  2. Tester une connexion java.net.URL
    Par KRis dans le forum Langage
    Réponses: 4
    Dernier message: 14/09/2010, 09h40
  3. [PHP 5.1] Fermeture d'une connexion avant une redirection.
    Par marcandre dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2009, 16h04
  4. Réponses: 4
    Dernier message: 26/06/2008, 20h38
  5. tester une connexion mysql
    Par pop_up dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 03/08/2007, 15h08

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