Ik wil een bepaalde actie ondernemen, maar alleen op een bepaald tijdtip, bijvoorbeeld in de eerste 3 minuten van ieder half uur. Dus tussen 10.00 en 10.03 en tussen 10.30 en 10.33. En dan weer tussen 11.00 en 11.03 en tussen 11.30 en 11.33 enz. en dat 24 uur per dag. Hoe kan ik dat het beste aanpakken? Iemand misschien tips wat de beste manier is om de tijd te berekenen?
Zoals ik al zei... als mijn services niet kunnen worden geladen, kan ik verder niks. Ook geen database call maken. Daarom wil ik het op deze manier doen.
Waarom niet een simpel tekst bestand met daarin de unix timestamp van wanneer het de laatste keer fout ging opslaan?
Vervolgens kun je een cronjob maken die bepaald of de timestamp in dat bestand langer dan X tijd eenheden in het verleden ligt. Alleen dan verstuur je een email. Als je niet veel bezoekers hebt kan het zijn dat je iets meer emails krijgt, maar dan had je het maar sneller op moeten lossen.
Beantwoord die vraag, daarna hebt je recht om de volgende code te gebruiken:
<?php
>> Maar waren zouden je services ineens niet worden ingeladen?
Geen idee? Een configuratie-bestand wat corrupt is of niet kan worden geladen? De yaml parser die niet werkt? In de praktijk zal het vrijwel nooit voorkomen, maar als het gebeurt wil ik er wel op zijn voorbereid en ervan op de hoogte worden gebracht. Als ik geen mail stuur naar mezelf, dan heb ik niks in de gaten.
>> Waarom niet een simpel tekst bestand met daarin de unix timestamp van wanneer het de laatste keer fout ging opslaan?
Is een optie, maar ik denk dat voor dit specifieke geval in mijn situatie mijn optie net zo handig is, zo niet handiger.
>> if ((date('i') % 30) < 3)
Euh, oké... dat is waarschijnlijk wat ik zoek... maar wat doe je hier precies :-s
De minuten ophalen dat snap ik, maar daarna..?
% is de modulo operator.
Om heel simpel uit te leggen wat het doet: het haalt zo vaak mogelijk de waarde rechts (30) van de waarde links af (date('i')).
Om 18:5 zal gelden (date('i') % 30) === 5.
Om 21:40 zal gelden (date('i') % 30) === 10
Als je pseudo code wilt:
<?php
function modulo($left, $right) {
while ($left > $right)
{
$left -= $right;
}