Pseudo Cronjobskript

  • Heyho,
    hier mal was für alle, die für echte Cronjobs zu doof sind/nicht genug Geld haben/nur begrenzte Zeitintervalle geboten kriegen


    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 8) ) anbietet?

  • Befristet? Könnte mir vorstellen, dass die keine serverblockierenden "Überqueries" haben wollen oder so.
    Aber wenn die das script dann abbrechen, ... das wäre echt mies :D


    Btw: warum $duration = - ?

  • Jiop, könnt halt sein, dass die dann bitten, das wieder rauszunehmen, mal ausprobieren ^^
    Aber das tolle ist ja, durch das sleep() blockt es ja nicht duaerhaft, sondern nur alle


    Und $duration = - ... weil sonst bei $duration += ... (Z. 12) eine zu hohe Zahl rauskommt, bei -= würde aber eine negative Zahl rauskommen.
    Die Alternative wäre $duration = microtime() (Z. 6), dann $duration -= micro... (Z. 12), dafür aber dann $interval + $duration (Z.14).


    Das nennt sich Mathematik, oder Zahlenlogik, wie mans lieber hat, einfach mal rumspielen, am Besten mit Abbruchfunktion ;)

  • geht doch aber auch einfacher :D

  • Hmm, mit usleep natuerlich...
    Hab ich irgendwie verpennt, dass es die ja auch noch gibt, und dann muss man halt vorher runden :D


    Ausserdem ist es fuer die meisten einfach in Sek, asntatt Mikrosek. zu denken, deshalb so. Aber recht hast du natuerlich :thumbup:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!