Bonjour,
Je m'explique.
Je suis en train d'écrire un programme de gestion en HTML/Javascript/AJAX/PHP et Mysql.
Actuellement en cours de rédaction de certificats de conformité à la commande (merci à fpdf), je bute sur un sujet simple (d'apparence)
Lorsque que je demande l'ouverture d'une nouvelle fenetre pour la création du dit certificat, je lance une routine PHP.
Juste avant, j'ai lancé une routine AJAX d'attente
Je m'étais dit que d'utiliser les cookies étaient une bonne idée plutôt que d'écrire une donnée en base de donnée et de la scanner régulièrement pour en vérifier la modification
fichier attente.php : ( http://gestion1.ressorts.org/attente.php )
lancé à la main, le retour s'effectue 10s plus tard (parce que rien ne vient faire changer la valeur du cookie) donc en utilisation normale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 setCookie("attente","1"); echo ("cookie ['attente']=".$_COOKIE["attente"]."<---"); $i=0; for ($i=0;$i<10;$i++) { echo ("attente ".$i."s<br>"); sleep(1); if ($_COOKIE["attente"]=="0") break; }
Lancé par une routine AJAX, il n'y a aucun retour !!!
pire même... la modification du cookie dans le second fichier php n'a aucun effet
extrait en fin du fichier pour libérer la boucle d'attente
donne le résultat suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 echo ("cookie['attente'=".$_COOKIE['attente']."] -- "); setCookie("attente","0"); // permet de libérer un script qui attend cet élément pour se terminer, puis mettre à jour les différentes listes echo ("cookie['attente'=".$_COOKIE['attente']."] -- ");
cookie['attente']=1 -- cookie['attente']=1 --
Je ne suis pas buté sur l'utilisation d'un cookie, ou de toute autre méthode... mais si la seule solution est de passer par la base de données, je m'y résoudrais, mais autant éviter de surcharger cette dernière pour quelque chose de pas vraiment utile.
Je peux aussi, au pire définir une durée fixe et lancer mes routines de fin de création de certificat au bout de 10-15-20s, mais c'est moins top que de le faire aussitôt que le certificat est affiché à l'écran.
Pour contourner, je pourrais aussi créer mon fichier sur le serveur avec une routine AJAX, et recevoir en retour le chemin d'accès pour afficher le certificat (et donc savoir aussi qu'à ce moment là, le fichier a été créé et que je peux réafficher toutes mes listes à l'écran en les mettant à jour)
A noter que ce que j'écris ne fonctionne pas avec IE PC (puisque c'est le seul à ne pas fonctionner, j'ai décidé que c'est à eux de se mettre à jour et pas à moi de créer des suites d'instructions qui ralentissent l'utilisation du navigateur pour les autres) d'autant plus qu'étant sur mac, je n'ai aucun moyen de tester avec IE PC.
merci d'avance de l'aide que vous pourrez m'apporter
Partager