Programme qui tourne en continu ?

Eléphanteau du PHP | 17 Messages

28 sept. 2009, 14:55

Est-ce que PHP permet de créer un programme qui tourne en continu, qui update une BdD, réalise des actions à différents intervalles de temps, etc ?

Si oui, comment faut-il procéder ?

Si non, vers quelles autres solutions je peux me tourner ?

D'avance merci.

Mammouth du PHP | 985 Messages

28 sept. 2009, 15:01

Salut,
Sur un serveur Unix, on utilise en général cron...
Sur un serveur Windows, on utilise en général les Tâches planifiées...

Regarde, par exemple, ce lien:
http://matthieu.developpez.com/execution_periodique/
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 1136 Messages

28 sept. 2009, 15:31

A vrai dire , oui c'est possible , mais php n'est pas fait pour ( tourner sans arrêt )..

Pour qu'un script php fonctionne en continue , il faut le lancer via cli .

Tu peux trés bien le lancer via un navigateur , mais il faudra laisser ton navigateur ouvert ..

Au niveau du code , il faut l'endormir entre chaque interaction pour qu'il n'utilise pas(ou peu) de ressources.

Regarder au niveau de : pcntl

http://fr2.php.net/manual/fr/ref.pcntl.php

Qui permet de gérer des processus , et les signaux ( une solution qui doit pouvoir fonctionner dans ton cas ).

Maintenant , si c'est juste pour lancer une tache à intervalles réguliers , tu as effectivement cron sous linux , comme le précise Dr@ke , qui me semble être la meilleurs solution .

Mais ce n'est plus ton script qui tourne constamment , mais bien cron qui lance ton script de façon régulière .

Ch.

Eléphanteau du PHP | 17 Messages

28 sept. 2009, 15:34

C'est intéressant merci.

Si je comprends bien, ma commande php va créer une application dans les tâches planifiées (ou dans Schtasks, ou bien directement en php) puis celle-ci va effectuer ma tâche au moment voulu ?

Mes besoins seraient du genre : Un objet se déplace, et au cours de son déplacement, il lui arrive des évènements qui peuvent modifier ses caractéristiques. Les intervalles de temps entre 2 évènements seraient en partie aléatoires (du genre 1 min + 0 à 5 minutes) ou bien définis et poncutels (prochain évènement dans 30 secondes).
J'ai besoin de gérer ces évènements jusqu'à ce qu'il soit arrivé, au moment duquel je n'ai plus à gérer les évènements qui lui arrivent.
Donc je crée des tâches planifiées à chaque fois ?


Est-ce que cela correspond ? Y'a d'autres solutions ?

(ps j'ai vu ton message posté entre temps, je vais aller lire ton lien)


edit : au passage, le programme doit tourner même si le client est parti. Le trajet peut prendre plusieurs heures, voire plusieurs jours. Je pense que les signaux ne correspondent pas à ce que je cherche.