Ankündigung

Einklappen
Keine Ankündigung bisher.

Crontab Datum testen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • puwu
    hat ein Thema erstellt Crontab Datum testen.

    Crontab Datum testen

    Ich habe eine kleine Funktion geschrieben mit der eine typische Datumsangabe von
    Crontabs getestet werden soll. Könnte vielleicht jemand mal drüber schauen ob ich irgend
    etwas vergessen und vollkommen blödsinnig gelöst habe ??

    PHP-Code:
    /*
    Beispiele fuer $timestring: * oder */
    3 oder 10-14 oder 12,14,17
    $timedata ist zu ueberpruefende Datumsangabe
    Wenn z.die Minute getestet werden solldann muss ein Zahl zwischen 0 und 59 übergeben werden.
    */
    function 
    check_crontab_date($timestring,$timedata) {
             if(
    $timestring=="*") return true;
             elseif(
    preg_match("/-/"$timestring)) {
                     
    $split explode("-"$timestring);
                     if(
    $timedata>=$split[0] && $timedata<=$split[1]) return true;
                     else return 
    false;
             
    // Suche nach einen Komma
             
    } elseif(preg_match("/,/"$timestring)) {
                     
    $split explode(","$timestring);
                     for (
    $var=0$var<count($split); $var++) {
                             if(
    $split[$var]==$timedata) return true;
                     }
             
    // Durchsuche den String nach */
             
    } elseif(preg_match("/\*\//"$timestring)) {
                     
    $timestring str_replace("*/","",$timestring);

                     if(
    $timedata%$timestring==0) return true;
             }
    }


    echo 
    check_crontab_date("*/3",5); 

  • puwu
    antwortet
    Meinst du etwa so ?

    PHP-Code:
    $crons = array(
             array(
    "*/1 * * * *""http://www./test.de/test.php"),
             array(
    "*/1 10-14 * * *""http://www./test.de/test.php"),
             array(
    "0 17,22 * * *""http://www./test.de/test.php"),
             array(
    "30 */3 * * *""http://www./test.de/test.php")
    );

    for (
    $var=0$var<count($crons); $var++) {
             
    $split explode(" "$crons[$var][0]);

             echo 
    $crons[$var][0]." - ";

             if(
    check_crontab_date($split[0],date("i"))==&& check_crontab_date($split[1],date("H"))==&& check_crontab_date($split[2],date("d"))==&& check_crontab_date($split[3],date("n"))==&& check_crontab_date($split[4],date("w"))==1) {
                     echo 
    $crons[$var][1];
             }
             echo 
    "<br>";

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Schreib doch mal ein paar Unittests.

    Einen Kommentar schreiben:


  • mimomamu
    antwortet
    Dokumentation hast du vergessen, ungefähr so:

    PHP-Code:
    /**
     * Hier steht normalerweise ein kurzer Satz der die Funktion erläutert.
     *
     * Hier steht normalerweise eine detailiertere Beschreibung der Funktion.
     * Insbesondere wird darauf eingegangen, welche Vorbedinungen erfüllt sein
     * müssen damit die Funktion aufgerufen werden darf und welche
     * Nachbedingungen die Funktion garantiert.
     *
     * @param string $timestring Hier steht, was der erste Parameter bewirkt
     * @param int $timedata Hier steht, was der zweite Parameter bewirkt
     * @return bool Hier steht, was der Rückgabewert bedeutet
     */
    function check_crontab_date($timestring,$timedata) {
      
    // ...

    Wenn du auf Dokumentation verzichtest, dann ist die Funktion per Definition fehlerfrei. Ein Fehler ist immer ein Unterschied zwischen einem erwarteten und einem tatsächlichen Egebnis. Wenn nicht dokumentiert ist, was erwartet wird, dann gibt es nnichts zu unterscheiden.

    Einen Kommentar schreiben:

Lädt...
X