Je suis en train de developper un appli en php version ligne de commande et
je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je
voudrai faire une sorte de timer afin que le code se lance toutes les XX
secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Anthony Rossetto
[...]Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
Salut,
tu peux regarder du côté de la fonction sleep().
a +
[...]Dans cette appli je
voudrai faire une sorte de timer afin que le code se lance toutes les XX
secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
[...]Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
Salut,
tu peux regarder du côté de la fonction sleep().
a +
Marc
Je suis en train de developper un appli en php version ligne de commande et je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
oui, c'est possible, enfin a condition que le traitement soit plus court que le cycle d'activation, sinon il faudrait creer des sous-processus (fork).
il faut tenir compte du temps d'execution du script puis faire un sleep modulo le temps du cycle. Cela se fait que quelque opérations dont un modulo, et la fonction time() qui donne le nombre de secondes ecoulées.
ce code fonctionne pour un cycle d'une heure (3600 secondes) :
<?php
$time = time(); $delay = 3600 - ( $time % 3600);
echo "time = $timen"; echo "delay = $delayn";
?>
Je suis en train de developper un appli en php version ligne de commande et
je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je
voudrai faire une sorte de timer afin que le code se lance toutes les XX
secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
oui, c'est possible, enfin a condition que le traitement soit plus court
que le cycle d'activation, sinon il faudrait creer des sous-processus
(fork).
il faut tenir compte du temps d'execution du script puis faire un sleep
modulo le temps du cycle. Cela se fait que quelque opérations dont un
modulo, et la fonction time() qui donne le nombre de secondes ecoulées.
ce code fonctionne pour un cycle d'une heure (3600 secondes) :
Je suis en train de developper un appli en php version ligne de commande et je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
oui, c'est possible, enfin a condition que le traitement soit plus court que le cycle d'activation, sinon il faudrait creer des sous-processus (fork).
il faut tenir compte du temps d'execution du script puis faire un sleep modulo le temps du cycle. Cela se fait que quelque opérations dont un modulo, et la fonction time() qui donne le nombre de secondes ecoulées.
ce code fonctionne pour un cycle d'une heure (3600 secondes) :
<?php
$time = time(); $delay = 3600 - ( $time % 3600);
echo "time = $timen"; echo "delay = $delayn";
?>
Marc
Je suis en train de developper un appli en php version ligne de commande et je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
voila pour le plaisir un petit truc en OO : dans le meme theme, regarde aussi cette page :
function run(){ $work = rand($this->min, $this->max); echo "running task {$this->name} for $work secondsn"; sleep($work); echo "running task {$this->name} donenn";
} }
class Scheduler{ var $task; var $period; var $start;
function Scheduler($task){ $this->task = &$task; }
function run($period){
$this->period = $period;
# get starting time. $this->start = time();
$this->task->run(); $this->sleep(); }
# wait for complete period function sleep(){ $delay = time() - $this->start; $sleep = $this->period - ($delay % $this->period); echo "sleeping $sleepn"; sleep($delay); } }
$task = new Task('test', 1, 5); $scheduler = new Scheduler($task);
while(1){ $scheduler->run(10); # run every 10s } ?>
Je suis en train de developper un appli en php version ligne de commande et
je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je
voudrai faire une sorte de timer afin que le code se lance toutes les XX
secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
voila pour le plaisir un petit truc en OO :
dans le meme theme, regarde aussi cette page :
Je suis en train de developper un appli en php version ligne de commande et je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
voila pour le plaisir un petit truc en OO : dans le meme theme, regarde aussi cette page :
function run(){ $work = rand($this->min, $this->max); echo "running task {$this->name} for $work secondsn"; sleep($work); echo "running task {$this->name} donenn";
} }
class Scheduler{ var $task; var $period; var $start;
function Scheduler($task){ $this->task = &$task; }
function run($period){
$this->period = $period;
# get starting time. $this->start = time();
$this->task->run(); $this->sleep(); }
# wait for complete period function sleep(){ $delay = time() - $this->start; $sleep = $this->period - ($delay % $this->period); echo "sleeping $sleepn"; sleep($delay); } }
$task = new Task('test', 1, 5); $scheduler = new Scheduler($task);
while(1){ $scheduler->run(10); # run every 10s } ?>
fp
Bonjour,
Tu peux aussi le lancer via la crontab (mais la fréquence max est 1 minute) avec tous les intervales que tu veux. En plus ça permet de redémarrer même si ton script plante ou si ton serveur reboot.
sinon, si tu restes sur ton idée, tu peux faire une boucle while(1) et commencer (ou finir) par un sleep qui fera patienter ton script le temp de ta tempo.
A+ Franck
Je suis en train de developper un appli en php version ligne de commande et je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
Cordialement
Bonjour,
Tu peux aussi le lancer via la crontab (mais la fréquence max est 1
minute) avec tous les intervales que tu veux. En plus ça permet de
redémarrer même si ton script plante ou si ton serveur reboot.
sinon, si tu restes sur ton idée, tu peux faire une boucle while(1) et
commencer (ou finir) par un sleep qui fera patienter ton script le temp
de ta tempo.
A+
Franck
Je suis en train de developper un appli en php version ligne de commande et
je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je
voudrai faire une sorte de timer afin que le code se lance toutes les XX
secondes. Est ce faisable? Si oui, où puis je trouver ces informations?
Tu peux aussi le lancer via la crontab (mais la fréquence max est 1 minute) avec tous les intervales que tu veux. En plus ça permet de redémarrer même si ton script plante ou si ton serveur reboot.
sinon, si tu restes sur ton idée, tu peux faire une boucle while(1) et commencer (ou finir) par un sleep qui fera patienter ton script le temp de ta tempo.
A+ Franck
Je suis en train de developper un appli en php version ligne de commande et je souhaiterai que cette appli tourne en tache de fond. Dans cette appli je voudrai faire une sorte de timer afin que le code se lance toutes les XX secondes. Est ce faisable? Si oui, où puis je trouver ces informations?