09. september 2008 - 15:38
Der er
11 kommentarer og 1 løsning
Nedtælling til tidspunkt (PHP)
Hejsa. Jeg kører et cronjob kl 6:00 og kl 18:00. Jeg ville gerne lave en nedtælling til dette så jeg kunne skrive: Næste opdatering om 2 timer. Altså en nedtælling til nærmeste cronjob.. Er der nogen der har nogle tips til hvordan man gør dette? Mange tak
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
09. september 2008 - 16:52
#1
Utestet: <?php $TidCronjob = array("21600","64800"); // 6 timer og 18 timer (Mindst nederst) $TidIdag = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $TidNu = mktime(18, 6, 0, date("m"), date("d"), date("Y")); $TidForskeld = $TidNu-$TidIdag; for ($i = 0; $i <= count($TidCronjob)-1; $i++) { if ($TidCronjob[$i] > $TidForskeld) { $TidUdskriv = $TidCronjob[$i]-$TidForskeld; $TidNaesteDag = 1; echo "Næste opdatering: ".date('H:i:s', mktime(0,0,0,date("m"),date("d"),date("Y"))+$TidUdskriv); } } // Hvis tiden er imorgen if ($TidNaesteDag != 1) { $TidImorgen = mktime(0, 0, 0, date("m"), date("d")+1, date("Y"))+$TidCronjob[0]; $TidUdskriv = $TidImorgen-$TidNu."."; echo "Næste opdatering: ".date('H:i:s', mktime(0,0,0,date("m"),date("d")+1,date("Y"))+$TidUdskriv); } ?>
09. september 2008 - 17:00
#2
Efter at have testet får jeg: Næste opdatering: 11:54:00 Det kan jo ikke helt passe :S
09. september 2008 - 18:24
#3
Prøv at leg videre med denne kode: <?php $next_day = getdate(strtotime('+1 day')); $next_job = mktime(6,0,0,$next_day['mon'],$next_day['mday'],$next_day['year']); $now = time(); $diff = $next_job - $now; echo "Sekunder til next job = " . ($diff % (60*60*12)); ?>
09. september 2008 - 18:40
#4
Den er tættere på, men den rammer vist ikke helt plet.. PHP time er: 18:39:36, og scriptet siger der er 11:34 til next job. Det er en lille difference.. Hvordan kan det være?
09. september 2008 - 18:41
#5
Ændrede i øvrigt til: $job = ($diff % (60*60*12))/60/60 For at få det i timer :)
09. september 2008 - 18:42
#6
Eller vent. Det er nok det der er fejlen. Jeg har gjort sådan her: $next_day = getdate(strtotime('+1 day')); $next_job = mktime(6,0,0,$next_day['mon'],$next_day['mday'],$next_day['year']); $now = time(); $diff = $next_job - $now; $job = ($diff % (60*60*12))/60/60; $test = explode(".",$job); $timer = $test[0]; $min = substr($test[1],0,2); print("Der er ".$timer." og ".$min." min til update<br>"); print date("H:i:s");
09. september 2008 - 18:49
#7
Prøv igen: <?php $TidCronjob = array("21600","64800"); // 6 timer og 18 timer (Mindst nederst) $TidIdag = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $TidNu = time(); $TidForskeld = $TidNu-$TidIdag; for ($i = 0; $i <= count($TidCronjob)-1; $i++) { if ($TidCronjob[$i] > $TidForskeld) { $TidUdskriv = $TidCronjob[$i]-$TidForskeld; $TidNaesteDag = 1; echo "Næste opdatering: ".date('H:i:s', mktime(0,0,0,date("m"),date("d"),date("Y"))+$TidUdskriv); } } // Hvis tiden er imorgen if ($TidNaesteDag != 1) { $TidImorgen = mktime(0, 0, 0, date("m"), date("d")+1, date("Y"))+$TidCronjob[0]; $TidUdskriv = $TidImorgen-$TidNu."."; echo "Næste opdatering: ".date('H:i:s', mktime(0,0,0,date("m"),date("d")+1,date("Y"))+$TidUdskriv); } ?>
09. september 2008 - 18:51
#8
Nu viser den korrekt tid. Spørgsmålet er om den også gøre det imorgen kl 6.. Det må tiden vise.. Mange tak ihvertfald :)
09. september 2008 - 21:08
#9
Min kode burde nu virke fint nok. :o) Se koden her, med lidt bedre formattering af DIFF: <?php //http://www.eksperten.dk/spm/844794 $next_day = getdate(strtotime('+1 day')); $next_job = mktime(6,0,0,$next_day['mon'],$next_day['mday'],$next_day['year']); $now = time(); $diff = ($next_job - $now) % (60*60*12); $hours = floor($diff / (3600)); $minutes = floor(($diff - ($hours * 3600)) / 60); $seconds = $diff - (($hours * 3600) + ($minutes * 60)); echo 'Tid på serveren : ' . date('H:i:s') . '<br />'; echo 'Timer : ' . $hours . '<br />'; echo 'Minutter : ' . $minutes . '<br />'; echo 'Sekunder : ' . $seconds . '<br />'; ?>
09. september 2008 - 21:09
#10
13. september 2008 - 10:17
#11
Fik du det til at virker eller ?
12. juni 2010 - 20:54
#12
Lukker her, skriv endelig hvis i vil have point :P
Vi tilbyder markedets bedste kurser inden for webudvikling