Bonjour a tous et merci d'avoir pris le temps de me repondre.
Aujourd'hui on peut faire sans frame.
Tu évolues dans un environnement particulier t'y obligeant ?
Non, je les utilise car au debut avant que vous ne me parler de la fameuse fonction session_write_close, j'etais à la recherche d'une maniere de rendre requetes parallele et instantannées, j'ai donc TOUT essayé a un moment de désespoir, toute idée qui me venait en tete, était à tester d'ou les frame. voila un oeu l'histoire, sinon rien ne m'y contraint.
Ce genre de traitements est ~automatique avec Vue ou Alpine (ou d'autres).
Tu gagnerais *beaucoup* à les utiliser. Je te montre un exemple si tu veux.
Pourquoi pas, je connais pas ces framework, je l'avoue.
ce que j'ai déjà fait dans ce genre de cas est de détecter les mouvement de souris. un mouvement signifie que l'utilisateur est en train d'utiliser la page et donc dans ce cas
belle astuce Matthieu, mais dans un environnement mobile, ca risque de ne pas marché je crois.
j'ai aussi pensé à un autre verrou possible au niveau des requêtes sql si jamais elles utilisent des transactions. l'ouverture d'une transaction va mettre en attente les autres requêtes sql.
J'utilise les transaction, je ne travaille pas en general sur la plus part des mes requetes sans transaction. donc begintransaction et commit ou roolback en cas d'exception.
J'ajoute que le temps d 'execution de ma requete MYQL (mes vues utilisee dans ce contexte ) aussi prennent un peu de temps dans l'environnement mysql.
Donc si une requete mysql est longue c'est obligé que sa combinaison ajax-php-mysql fasse attendre les autres requete ajax-php-mysql? et cela malgre session_write_close?
Non, ça ne devrait pas être gênant qu'une requête soit longue.
Si mes requetes SQL ne justifie pas l'attente de mes autres requetes ajax-php-mysql, tant mieu, je vais optimiser cependant mes requetes SQL plus tard comme e souligne aussi binarygirl.
En resume, mon soucis qui est:
comment faire en sorte que chaque requete Ajax soit independante de sorte que celui qui finit vite renvoit le resultat sans attendre les autres?
Ne peut pas avoir de solution car :
Forcément car JS traite séquentiellement les retours, chacun leur tour. Les facilités telles que les promesses ou les callbacks ne sont pas du vrai parallélisme, mais peuvent en donner l'illusion s'ils sont bien gérés grâce à leur nature asynchrone.
SI J'AI COMPRIS, donc quelque soit ce que je vais utiliser si par exemple il y a trois requete:
- requete 1 doit finir et retourner le resultat;
requete 2 patiente que requete 1 retourne son resultat JSON avant de RETOURNER SON RESULTAT à lui;
requete 3 patiente que requete 2 retourne son resultat JSON avant de RETOURNER SON RESULTAT à lui
donc si la premiere requete doit, via PDO,retourner la liste des mutations de cellules depuis la creation de l'univers, les deux autres requetes peuvent faire leur testament et cela jý peux rien.
Je ne veux pas me lancer dans une resolution de probleme alors que c'est pas possible en fait:
DONC:
est ce que les retours (comme l'a dit Seb c'est un soucis de retour), seront toujours sequentiels, du coup je dois juste reduire mes temps d'execution SQL car c'est là que cela prend du temps je me suis rendu compte, car mes scripts php ne font rien que recevoir les requete ajax, executer ma requete SQL via PDO et retourner les resultats, alors que quand je me connecte en `mysql -u root -p...` et que je lance ces meme requetes, cela prend du temps. a moins que les requetes SQL plus ou moins lente, ne peuvent pas justifier l'attente des autres requetes ajax lancées?
Est ce que quelque soit l'ordre dans lequel se lance mes script, les retours se feront TOUJOURS SELON L'ORDRE et NON SELON le plus rapide , et meme executer avec des Promesses, un retour de requete fera attendre les autres requete ajax, meme avec session_write_close??
Si vous me dites que cela ne depend pas de SQL (car je ne sais pas si il y a une methode magique pour faire ca), alors si il y a une solution? je doit revoir ma fonction maison AJAX (je vais la remplacer de toute facon par l'API fetch)
Partager