Salut,
Grafikart a fait une très bonne vidéo là-dessus :
https://www.grafikart.fr/tutoriels/jquery/progress-bar-440
Bonjour,
J'aimerais utiliser une progress barre qui indique la progression de l'execution d'un script php (plutôt long).
Seulement je ne sais pas comment m'y prendre, pouvez vous me conseiller ?
Salut,
Grafikart a fait une très bonne vidéo là-dessus :
https://www.grafikart.fr/tutoriels/jquery/progress-bar-440
Ok oui très bon tuto mais comment l'adapter à ce que je veux faire ? c'est à dire dans une méthode où j'ai 10 requêtes ?
Bonjour.
dans une méthode où j'ai 10 requêtes
Tu veux dire 10 requêtes SQL ?
Si c'est le cas, ça fait un peu trop dix requêtes SQL pour une seule méthode, tu devrais penser à revoir ta méthode pour diminuer le nombre de requêtes SQL qu'elle effectue.
J'exagere un peut mais il se trouve que je dois faire une opération un peut longue, (calcule + requete sql)
Montre nous ton script, en l'état nous ne pouvons t'aider.
Bon bah voila ^^
Je pense qu'il serait possible que tu incrémentes à chaque fois que l'éxécution d'une requête est finie ainsi tu pourrais faire une barre de progression.
ok du coup comment je renvoie l'incrémentation vers js ?
En utilisant ajax
Ou plutôt les websokets pour éviter les multitudes de requête ajax qui retourne la même réponse. Le problème est le suivant :
Ajax méthode :
client : hei quel est ton état ?
serveur: status => 1
client (n time après) : Hei quel est ton état ?
serveur: status => 1
[...]
Et ainsi de suite.
la philosophie websocket :
Serveur : Hei j'ai changé d'état, je suis status 1
Client : j'update mon UI
serveur quand il change d'état : Hei j'ai changé d'état, je suis status 2
Ici c'est le serveur qui notifie le client qu'il a changé, et pas le client qui intéroge à interval régulier si le serveur a changé d'état.
Il faudrait que le serveur renvoie les états en mode "chunk" (rajouter le header 'Transfer-Encoding: chunked' côté serveur).
En mode chunk, la connection entre le serveur et le navigateur reste ouverte tant qu'il reste des chunk à envoyer
En js ça donne
voir l'article ici
Côté php il suffit de flusher l'état après chaque requête