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

  • 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); 


  • #2
    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.
    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

    Kommentar


    • #3
      Schreib doch mal ein paar Unittests.
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        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>";

        Kommentar

        Lädt...
        X