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 :

envoyer les infos par CURL une seule fois si le temps dépasse une certaine limite [PHP 5.5]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut envoyer les infos par CURL une seule fois si le temps dépasse une certaine limite
    Bonjour,
    J'envoie les informations à un web service
    Je récupère les informations de transferts de donnée :
    1. Info sur la connexion
    2. Réponse de web service
    3. Les erreurs (s'il y'en a)
    4. et je ferme la connexion.


    Ensuite, je traite ces informations :
    j'enregistre les informations de connexion dans un fichier avec la réponse de web service dans un fichier
    S'il y a des erreurs de CURL (curl_error), je l'envoie des alertes par courriels, etc.
    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
    24
    25
    26
    //...
     
    $ws_curl = curl_init();
     
    curl_setopt($ws_curl, CURLOPT_URL, $webS_url);
    curl_setopt($ws_curl, CURLOPT_POST, true);
     
    curl_setopt($ws_curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ws_curl, CURLOPT_SSL_VERIFYPEER, false);
     
    curl_setopt($ws_curl, CURLOPT_POSTFIELDS, http_build_query(array('xml' => $data_xml)));
    curl_setopt($ws_curl, CURLOPT_RETURNTRANSFER, true);
     
    $launch = curl_exec($ws_curl);  //les informations à un web service
     
    $comeFromCURL = curl_getinfo($ws_curl);  //les informations de transfere de data :Info sur la connexion
     
    $data_for_log = "\r\n" .'Information come from transfer by CURL :'.  "\r\n" . serialize($comeFromCURL) . "\r\n" .'Response by server distance (webservice) :'."\n". $launch. "\r\n";
    if(curl_errno($ws_curl)) //erreurs (s'il y'en a)
    {			
    	$error_number_curl = curl_errno($ws_curl);
    	$error_text_curl = curl_error($ws_curl);
    }
    curl_close($ws_curl);	//ferme la connextion
     
    //...
    Mon application envoie 1re fois les informations à web service et dés qu'il reçoit les informations par [curl_getinfo] la connexion se ferme par [curl_close].
    Par contre, lorsque le script ne reçoit pas rapidement les informations, il l'envoie une deuxième fois.
    Comment peut-on définir ce délai ?
    J'ai regardé les informations reçues par [curl_getinfo]

    Les délais normaux ce sont :
    [total_time] => 0.672 < -------- s:10:"total_time";d:0.67199999999999993;s:15
    [total_time] => 2.141
    [total_time] => 2.157
    total_time] => 2.172
    total_time] => 2.656
    [total_time] => 5.64
    total_time] => 6.968
    Pendant tous ces temps, le "CURL" a envoyé une seule fois les informations.

    Par contre le "CURL" a envoyé 2 fois les informations lorsque le délai est comme cela :
    [total_time] => 9.688
    total_time] => 9.656

    [total_time] => 8.641
    [total_time] => 8.547 < -------- (s:10:"total_time";d:8.5470000000000006;

    [total_time] => 9.688
    total_time] => 9.656

    Comment puis-je définir cette limite?
    Comment puis-je empêcher le 2e envoi après cette limite?

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    Est-ce que quelqu'un peut m'aider un peu ?

    Merci

  3. #3
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut Quand le script exécuté ne reçoit pas la réponse...
    Puisque personne ne me répond, je pose cette question :
    Est-ce que le script curl exécuté ne reçoit pas une réponse par le web service, s'exécute automatiquement ou renvoie automatiquement les informations au destinateur ?
    Si oui ? Combien fois ?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ben une fois, le serveur n'a absolument aucune raison de répondre plusieurs fois à une seule et même requête

  5. #5
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Alors puisque tu dis, pourquoi, il y a un deuxième envoi lorsque le délai est plus que 8 secondes ?

  6. #6
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut TCP l'envoie 2e fois lorsqu'il y a plus de temps d'attente ?
    Donc ce n'est pas mon cUrl mais le protocole TCP qui envoie la 2e fois puisqu’il n'a pas reçu l'ACK (l'accusé de réception) dans le bon délai, n'est ce pas ?
    Si c'est le cas, comment puis-je régler pour que TCP attende un peu plus de temps ?

    Merci

  7. #7
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Puisqu'il n'y a pas de solution, je ferme ce ticket...
    merci

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

Discussions similaires

  1. Remplacer une référence dll dans plusieurs projet en une seul fois
    Par adrienfehr dans le forum Développement Windows
    Réponses: 0
    Dernier message: 23/10/2015, 17h36
  2. Changer l'icône par défault de toutes les form en une seule fois
    Par onizuka_metal dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/09/2010, 12h11
  3. lu tous les jours mais exécuté une seule fois par mois
    Par sianto dans le forum Scripts/Batch
    Réponses: 13
    Dernier message: 17/11/2008, 09h08
  4. Réponses: 2
    Dernier message: 04/07/2006, 02h32
  5. [XSLT] Afficher une seule fois les attributs redondants...
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/11/2005, 09h52

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