tijd, tips?
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?
Kan allemaal met javascript
cronjob van toepassing
Je kiest je 'tijdsinterval' en controleert dat met PHP. Met een paar if-statements moet je dan wel redelijk accuraat een script kunnen uitvoeren. Ik heb cronjobs zelf gebruikt voor automatisch backups maken en emailen naar mezelf.
Uh, mij lijkt eerder een Je kiest je 'tijdsinterval' en controleert dat met PHP. Met een paar if-statements moet je dan wel redelijk accuraat een script kunnen uitvoeren. Ik heb cronjobs zelf gebruikt voor automatisch backups maken en emailen naar mezelf.
Gewijzigd op 16/12/2013 10:12:47 door Albert de Wit
Toevoeging op 16/12/2013 10:15:20:
@Albert, goed punt... maar ik wil het graag in PHP zelf doen. Ik ben vooral benieuwd wat de beste manier is om die tijdsintervallen te bepalen, dus hoe bepaal je of je in de 3 eerste minuten van het hele of het halve uur zit?
Cronjob is gewoon "taakbeheer" Jij wilt een actie uitvoeren om een bepaalde tijd. Wat voor actie dat is, is aan jou.
Ja, maar nogmaals dat is niet wat ik zoek. De situatie is niet altijd geldig (moeilijk uit te leggen) maar een cronjob kan ik in dit geval niet toepassen. Ik moet het dus echt in PHP oplossen. Heeft iemand tips?
Maar wat als je in die tijdsspanne van drie minuten juist geen bezoekers hebt?
Uh Ozzie, wat is de bedoeling. Wat probeer je te bereiken? En wat Aar zegt, wat als je dan geen bezoekers hebt.
Dan wordt de actie dus niet uitgevoerd :)
Mijn website gebruikt services. Normaal pluk ik deze uit de cache. Stel dat ik de cache verwijder dan moeten de services opnieuw worden aangemaakt. Dit gaat normaal gesproken uiteraard gewoon goed, maar het zou kunnen dat het een keer fout gaat. Als de services niet zijn ingeladen, kan de rest van m'n applicatie niks. In dit uitzonderlijke geval wil ik een error boodschap op het scherm tonen en de applicatie stoppen. Echter, ik wil natuurlijk ook mezelf waarschuwen (anders heb ik niet in de gaten dat er iets mis is) door een e-mail te sturen. En om dit laatste gaat het dus. Ik wil een check inbouwen waardoor ik niet ineens overspoeld wordt met tientallen e-mails. Op deze manier (door alleen op bepaalde tijdstippen e-mail te versturen) kan ik dat enigszins controleren. Dat is de gedachte erachter.
Moet er om 10:40:00 iets veranderd worden aan de database of zo?
Of moet er iets op het scherm verschijnen van wie ook op jouw site zit?
"een bepaalde actie" is te vaag
Ozzie PHP op 16/12/2013 10:47:07:
Ik wil een check inbouwen waardoor ik niet ineens overspoeld wordt met tientallen e-mails.
Houd gewoon een 'last_mail_sent' bij in de DB
Gewijzigd op 16/12/2013 10:51:14 door Kris Peeters
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.
Maar waren zouden je services ineens niet worden ingeladen?
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:
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..?
Oké.. das inderdaad vrij gewoon :)
Ben nog wel benieuwd naar wat Dos daar doet in zijn code?
Kijken het aantal minuten gedeeld kan worden door 30 zonder restwaarde.
Euh...? :-s Kun je dat iets verder uitleggen?
- Aar - op 16/12/2013 11:13:03:
Kijken het aantal minuten gedeeld kan worden door 30 zonder restwaarde.
Ja maar dan word bijvoorbeeld de 31ste minuut niet goedgekeurd. Terwijl de 30ste t/m 33ste minuut het moeten doen.
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:
Code (php)
Gewijzigd op 16/12/2013 11:34:44 door Dos Moonen