Heyho,
hier mal was für alle, die für echte Cronjobs zu doof sind/nicht genug Geld haben/nur begrenzte Zeitintervalle geboten kriegen
<?php
ignore_user_abort(1); // im Hintergrund laufen (solange Server läuft!)
set_time_limit(0); // Kein automatischer Abbruch (Vorsicht!)
$interval=60*15; // Runintervall in Sekunden (hier alle 15 Min)
do {
$duration = -microtime(true);
/*
* Hier das auszuführende "Cron"script
*/
$duration += microtime(true);
$duration = round($duration);
sleep($interval - $duration); // WICHTIG!!! Skript pausieren!!!
} while (true);
?>
Alles anzeigen
Diese Funktion läuft aufgrund der beiden ersten Befehle theoretisch bis in alle Ewigkeit, praktisch zumindest, bis der Server abstürzt. Die Zeitangabe $interval muss in Sekunden erfolgen, es wird zudem berechnet, wie lange das Skript ungefähr lief, damit man besser abschätzen kann, wann es wieder startet.
Ohne Mikrozeit würde das Skript zB immer eine Viertelstunde nach Abschluss des letzten Mals starten (sich also immer weiter verschieben), so (fast genau) eine Viertelstunde nach Beginn des letzten Mals (und damit ungefähr zum gleichen Zeitpunkt).
sleep() ist hierbei essentiell
Ohne würde das Script ohne Unterbrechung, ohne Stopmöglichkeit in einer Dauerschleife laufen und eine enorme Serverlast darstellen!!!
Daher ist es auch enorm wichtig, falls Userdaten in diese Schleife geschickt werden, diese MINDESTENS dreimal zu validieren!
Nun mal ne blöde Frage: Ist das legal, wenn der Anbieter auch zeitlich befristete Cronjobs (zB max. 60 Sek ) anbietet?