PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → WEBDEV PHP Tache parallèle
WEBDEV PHP Tache parallèle
Débuté par Frederic, 29 jan. 2019 15:02 - 7 réponses
Membre enregistré
51 messages
Posté le 29 janvier 2019 - 15:02
Bonjour ,

je recherche un moyen en webdev php de pouvoir lancer une tache serveur longue sans bloquer la page web du navigateur . Je pensais utiliser les fonctions ajaxexecuteasynchrone mais cela ne focntionne pas .

Avez vous une idée .

Merci

--
Merci .
Cordialement

FDU
Membre enregistré
283 messages
Popularité : +3 (3 votes)
Posté le 29 janvier 2019 - 15:33
Salut,

Qu'est ce qu'une tâche longue pour toi ?
Pour PHP il est rare de dépasser les 2 mn (sauf si tu a la main sur la config - pas en hébergé) après la tâche est squouisée, zouiiip (ne cherche pas ces verbes n'existent pas)

Donc, reste plus que les tâches CRON (qui en principe ne sont pas restreintes aux 2 mn)
Ou bien découper les procédures PHP et utiliser avec des "vas et vient" des ajaxexecuteasynchrone
Ou bien utiliser un TIMER pour appeler des ajaxexecuteasynchrone (plus compliqué, faut être sûr que le timer ne se déclenchera pas avant la fin de la fonction appelée)

Voila quelques idées, à toi d'approfondir.

Bon dev et A+
Membre enregistré
51 messages
Posté le 30 janvier 2019 - 09:35
Bonjour ,

Tony , merci de ta réponse .

ma tache est de moins de 2 minutes mais je veut que l aspect visuel du navigateur n'apparaisse pas comme bloqué .
En webdev php les times ne fonctionnent pas .

Mes premiers essais en ajaxexecuteasynchrone ne fonctionne pas non plus ! ou alors je n ai pas compris le principe .

A+

--
Merci .
Cordialement

FDU
Posté le 30 janvier 2019 - 16:28
Frederic a exprimé avec précision :
Bonjour ,

je recherche un moyen en webdev php de pouvoir lancer une tache serveur
longue sans bloquer la page web du navigateur . Je pensais utiliser les
fonctions ajaxexecuteasynchrone mais cela ne focntionne pas .

Avez vous une idée .

Merci


je suppose qu'en php les taches différées ne sont pas dispos ?

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Membre enregistré
283 messages
Popularité : +3 (3 votes)
Posté le 31 janvier 2019 - 08:19
Salut,

@Eric
Sauf à être passé à côté, les tâches différées ou planifiées ne sont pas dispo en PHP
Il faut passer par les tâches CRON (de mémoire c'est un peu laborieux de les mettre en place)

Frederic a écrit :

ma tache est de moins de 2 minutes mais je veut que l aspect visuel du navigateur n'apparaisse pas comme bloqué .
En webdev php les times ne fonctionnent pas .

Mes premiers essais en ajaxexecuteasynchrone ne fonctionne pas non plus ! ou alors je n ai pas compris le principe .


@Fred
Les 2 minutes dépendent de la config chez ton hébergeur. Certains limitent à 30 sec.
Les TIMER existent et fonctionnent (du côté client avec la bande verte, pas côté serveur PHP, bande jaune)
Déclare le timer dans le "Chargement (onload)". Les variables sont globales dans le onload et locales ailleurs.
Le principe de AJAXExécuteAsynchrone(<Procédure serveur> , <Procédure navigateur> , <Paramètre 1>...)
Il appelle une procédure serveur PHP. Quand elle se termine elle renvoie UNE valeur à la procédure navigateur (bandeau vert)
Cette même procédure navigateur peut relancer un AJAXExécuteAsynchrone qui renverra UNE valeur à une procédure navigateur qui pourra etc, etc, etc...
Ça marche bien et le navigateur n'est pas bloqué.

Bon courage et A+
Membre enregistré
51 messages
Posté le 31 janvier 2019 - 09:57
Bonjour Tony ,

Lespremiers essais d ajaexecuteasynchrone ne marchait pas , je vais donc retravailler de ce coté . je pense que je n ai pas tout compris . Je pensais avoir bien étudier l'aide .

As tu un exemple ?

merci de ton temps et des réponses .

--
Merci .
Cordialement

FDU
Membre enregistré
283 messages
Popularité : +3 (3 votes)
Posté le 31 janvier 2019 - 11:01
Re,

Oui regarde l'aide.

Pour l'exemple je n'ai pas trop le temps en ce moment, désolé.

Essaye un truc simple :
1 page avec une zone de texte + 1 bouton
1 procedure PHP "php_bonjour" par exemple. Dedans mets : RENVOYER "Bonjour"
1 procedure JS (navigateur barre verte) "ret_php" par exemple. Dedans tu mets : SAI_texte = valret (SAI_texte est le nom de la zone texte et valret est la valeur récupérée dans les arguments de ta procédure "ret_php")
Pour ton bouton mettre Action à aucune (très important sinon il enverra les données au serveur qui réaffichera ta page et donc jamais de retour de l'ajax - c'est bête mais ça arrive d'oublier)
Donc dans le code navigateur du bouton tu mets ton ajaexecuteasynchrone avec procédure à appeler = "php_bonjour" et celle de callback = "ret_php"

Fais un GO et clic sur le bouton, en principe un "Bonjour" devrait apparaître dans ta zone de texte.

Bon je t'ai fait ça rapidement, j'espère n'avoir rien oublié.

Bon courage, bon dev et A+
Membre enregistré
51 messages
Posté le 31 janvier 2019 - 12:02
Tony merci

je vais essayer .

bon dev et A+

--
Merci .
Cordialement

FDU