|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hello,
i've written a daemon in php and everthing works fine. i'm able to execute tasks periodically. for example every 900 seconds. now i want the daemon to do a task only once a day, for example at 1800 hours. but i'm not sure how to do this. saying something like while (true) { if ($current_time==1800) dosomething } fails if i miss 1800 exactly. saying something like while(true) { if ($current_time<=1801 && $current_time=>1800) dosomething } leads to running the function twice, or more depending on the execution time of the function. I'm using php 4.3 (more is not allowed at the moment) Thanks for any .... Greetings, Dirk |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
You could always make it run the task every 86400 seconds...
Anyway your code executes twice because you use 2 equal than or greater/less than. Remove an = from that if and it should work ok. I think anyway. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Hi,
BoneIdol schrieb: > You could always make it run the task every 86400 seconds... this was my guess, but depends on starting the daemon at 1800 hours, isn't it. > Anyway your code executes twice because you use 2 equal than or > greater/less than. Remove an = from that if and it should work ok. > > I think anyway. > that does not change anything case the function can execute more than once per second and a sleep 1 can lead to miss the time. i already tested this. dirk |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Couldn't you do a bit of a dirty hack and make a variable to say that
the code has run today and not to execute this code again until tommorow? I'm not overly familiar with daemons in php, by the way. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
"Dirk Laurenz" <dirk.laurenz@fujitsu-siemens.com> schreef in bericht
news:feic0q$qc2$1@nntp.fujitsu-siemens.com... > Hello, > > i've written a daemon in php and everthing works fine. > i'm able to execute tasks periodically. for example every 900 seconds. > > now i want the daemon to do a task only once a day, > for example at 1800 hours. but i'm not sure how to do > this. > saying something like > > while (true) > { > if ($current_time==1800) dosomething > } > > fails if i miss 1800 exactly. > saying something like > > while(true) > { > if ($current_time<=1801 && $current_time=>1800) dosomething > } > > leads to running the function twice, or more depending on > the execution time of the function. > > I'm using php 4.3 (more is not allowed at the moment) > > Thanks for any .... > > Greetings, Dirk 1800 hours happens only once a day, so you must keep track of the last day that the task is done. $done_day = 0; while (true) { if ($done_day <> today() && $current_time >= 1800) { $done_day = today(); dosomething... } } today() should return the current day of the week, month or year. Frank |
|
![]() |
| Outils de la discussion | |
|
|