Retour : Page Principale > sommaire applications botanique > Appli Référentiel
Ce script doit donc ĂȘtre lancer en ligne de commande et exĂ©cuter par PHP CLI.
Le lancement de ce script doit ĂȘtre dĂ©clenchĂ© par un utilisateur depuis une interface web.
Ce script PHP n'utilise pas de commandes systĂšmes, seulement les fonctions PHP.
Deux cas se présentent :
Safe mode ON
Si l'on souhaite contourner le problÚme dans notre cas (pas de commandes systÚmes à exécuter) :
Solution 1 : l'utilisateur doit garde la page en question ouverte, le navigateur doit supporter la balise... en bref, c'est risqué.
Solution 2 : la plupart des hébergements mutualisés offre des possibilités de faire un cron ou il existe des solutions alternatives.
Nous retiendrons la solution 2.
Safe mode OFF
Cela devrait ĂȘtre forcĂ©ment le cas dans les versions de PHP supĂ©rieure Ă 5.3 car il devrait ĂȘtre supprimĂ©.
Dans ce cas lĂ , la page web peut lancer directement le script PHP CLI.
Référentiel - Solution portable pour exécuter un script PHP CLI
Contexte
Nous souhaitons exĂ©cuter un script PHP dont la durĂ©e d'exĂ©cution peut dĂ©passer 30s.Ce script doit donc ĂȘtre lancer en ligne de commande et exĂ©cuter par PHP CLI.
Le lancement de ce script doit ĂȘtre dĂ©clenchĂ© par un utilisateur depuis une interface web.
Ce script PHP n'utilise pas de commandes systĂšmes, seulement les fonctions PHP.
Deux cas se présentent :
Safe mode ON
Si l'on souhaite contourner le problÚme dans notre cas (pas de commandes systÚmes à exécuter) :
- utiliser la balise html meta refresh
- utiliser un cron
Solution 1 : l'utilisateur doit garde la page en question ouverte, le navigateur doit supporter la balise... en bref, c'est risqué.
Solution 2 : la plupart des hébergements mutualisés offre des possibilités de faire un cron ou il existe des solutions alternatives.
Nous retiendrons la solution 2.
Safe mode OFF
Cela devrait ĂȘtre forcĂ©ment le cas dans les versions de PHP supĂ©rieure Ă 5.3 car il devrait ĂȘtre supprimĂ©.
Dans ce cas lĂ , la page web peut lancer directement le script PHP CLI.
Algorithme
Page web de lancement d'un traitement :- Formulaire permettant de demander un nouveau traitement (job)
- Stockage dans une base de données du nouveau job à exécuter.
- Test existence/activation du safe_mode :
- Safe monde ON : configuration préalable d'un cron, attente du lancement du script via le cron
- Safe monde OFF ou supprimé (PHP > 5.3) : lancement du script via la fonction exec('php -f /chemin/vers/mon/dossier/mon_script.php');
- Recherche dans la base de données du job le plus ancien non traité
- Modification de l'enregistrement du job pour indiquer sa prise en compte et le début du traitement
- Lancement du traitement
- Ăcriture dans la base de donnĂ©es des logs ou des rĂ©sultats du script au fur et Ă mesure du traitement
- Modification de l'enregistrement du job pour indiquer la fin du traitement
- Via Javascript AJAX, il est possible de faire appele à un service web qui retourne l'état d'avancement du traitement.
- script Js fait appel au service web en passant l'id du job
- service web regarde l'état d'avancement du job et retourne l'info
- script Js affiche l'état du job