Beste,

Met deze code haal ik een bepaald tijdstip (gaat altijd over "vandaag") uit de database:


while( $obj = sqlsrv_fetch_object( $result )) {
   $tijdjeUitDB = $obj->TimeBegin->format('H:i:s');
}


Daarna trek ik daar 1 uur vanaf:


$tijdjeUitDB = strtotime($tijdjeUitDB) - 60*60;


En vervolgens wil ik het gaan vergelijken met tijdstip "nu":


if (strtotime(time()) >= strtotime($tijdjeUitDB)) {
  echo "ok";
}


Dit lukt echter niet. Er komt namelijk in alle gevallen "ok" te staan, ook als de vergelijking eigenlijk een negatief resultaat zou moeten geven...

Wat doe ik verkeerd? En nog belangrijker: hoe krijg ik dit opgelost?

Het doel is straks dit script door een CRON-job (iedere 15 min.) te laten triggeren.
Zodra het script "ziet" dat het tijdstip uit de database een uur (of minder) voor de huidige tijd licht, dan moet er "ok" verschijnen.

Alvast bedankt voor 't meedenken!
1) time() is al een "timestamp" (integer sinds 1970-01-01), die hoef je dus niet meer door strtotime() heen te halen (geen idee wat je dan krijg overigens).

2) Voeg aan de format van $tijdjeUitDB ook Y-m-d toe. Dan heb je een echte tijd (geen idee wat ie anders als datum pakt).

3) Draaien database en PHP op dezelfde server? Dan is het volgens mij onzinnig om dit te doen.

Thanks voor je reactie!

Ik heb bij beide "tijden" strtotime() weggehaald, en opeens werkt het :-)
Geen idee waarom het de hele middag dan niet lukte, maar ben blij dat het opgelost is...

Merci!!!
Los hiervan, zoals @Rob al min of meer aanhaalt, je meet hier met twee maten die mogelijk verschillen: de tijd volgens de database en de tijd volgens PHP. Het is gevaarlijk om die vervolgens te gaan vergelijken in de veronderstelling dat deze (altijd) gelijk lopen.

Misschien verschillen deze niet in je test/ontwikkelomgeving, maar wie zegt dat jouw productieomgeving niet aparte servers heeft voor aparte doeleinden (webserver, databaseserver)?

Kies één van de twee, en houd deze vervolgens overal aan als "de tijd".

Ahzo, ok. Hmzzz, ik denk dat ik het wel begrijp, maar weet niet hoe ik dit dan zou moeten maken.

Wie kan me op weg helpen hiermee?

Thanks!
Gewoon overal consequent $_SERVER['REQUEST_TIME'] of time() of equivalent (PHP) gebruiken, of equivalente MySQL-functies (DATE(), TIME(), NOW() et cetera) maar geen mengelmoes van PHP- en MySQL-functies / -waarden.

Reageren