Diana: Script nur zu einem best. Zeitpunkt ausführen

Hallo,

ich möchte gerne, dass mein Script nur zu einem bestimmten Zeitpunkt ausgeführt wird - soll heißen: Ich möchte dass mein Script nur jeden zweiten Montag im Jahr immer zwischen 09:00 und 10:30 ausgeführt wird.
D.h. meine Besucher sollen einen bestimmten Text bzw. ein bestimmtes Eingabeformular immer nur an jeden zweiten Montag im Jahr immer zwischen 09:00 und 10:30 ausfüllen können.
Gut wäre auch noch, wenn man festlegen könnte, dass der Text in diesem o.g. Zeitraum nur 3Mal angezeigt würde.

Ich hab's schon mit einigen if()-Zeilen versucht - kriege es aber nicht hin ...

Wäre echt toll, wenn mir einer von Euch Profis helfen könnte.

GLG, Eure Diana

  1. sers,

    ich möchte gerne, dass mein Script nur zu einem bestimmten Zeitpunkt ausgeführt wird

    schau mal auf http://www.jgs-xa.de unter dem Bereich "Servermonitoring & Cron-Jobs".
    "Cron-Jobs" sind das, was du suchst!

    gruß,
    benne

    1. sers,

      schau mal auf http://www.jgs-xa.de unter dem Bereich "Servermonitoring & Cron-Jobs".
      "Cron-Jobs" sind das, was du suchst!

      da es vielleicht etwas schwierig zu finden ist, hier ein genauerer Link: http://www.jgs-xa.de/sponsorportal.php?id=34&sid=

      gruß,
      benne

    2. Hallo benne,

      ich möchte gerne, dass mein Script nur zu einem bestimmten Zeitpunkt ausgeführt wird
      schau mal auf http://www.jgs-xa.de unter dem Bereich "Servermonitoring & Cron-Jobs".
      "Cron-Jobs" sind das, was du suchst!

      Das glaube ich nicht.

      Grüße aus Barsinghausen,
      Fabian

    3. Hallo,

      nein, ich suche keine CronJobs.
      Der User soll die Seite schon besuchen und die "Seite selbst" soll dann entscheiden, was passiert, wenn Sie besucht wird ... (s.o.) ... die Seite bzw. der Text soll also nur zu dem von mir angegeben Zeitraum angezeit werden.

      LG Diana

      1. sers,

        nein, ich suche keine CronJobs.

        ok, sorry. ich hab deine fragestellung nicht ausführlich genug gelesen und habe vorschnell geantwortet.
        Vielleicht hilft dir aber http://www.selfphp.info (siehe Datum & Zeitfunktionen) weiter.

        gruß,
        benne

  2. Hallo Diana,

    Du beschreibst da zwei wesentliche Programmmerkmale:

    1. Zeitgesteuerte Scriptauswahl

    2. Das angezeigte Script nur eine bistimmte Anzahl anzeigen lassen.

    Beide Probleme lassen sich lösen.
    Leider überschneiden sich beide Problembereiche eventuell. Problem 2 ist also keine vollständige Untermenge von Problem 1, denn es wäre ja möglich, dass nach dem zweiten Mal Anzeigen die Zeitumschaltung aktiv wird.

    Du musst also erst entscheiden, ob das dann gültige Script von vorne zählen soll oder weiterzählen.

    Gut, machen wir's einfach:

    <?php

    definiren oder include Scriptanzeigefunktionen (Zähler)

    wenn Zeit zwischen a und b
     include script 1
     break
     wenn Zeit zwischen b und c
     include script 2
     break
     sonst schick den Surfer heim

    ?>

    Na, und die Anzeigezählung machst Du entweder mit einem Cookie, wenn sie pro Surfer zählen soll, oder wenn Du meintest, dass das Script insgesamt nur dreimal angezeigt werden soll (also für alle Besucher zusammen), dann merkst Du Dir das in einer separaten Datei.

    Liebe Grüße

    Tom

    1. Hi Tom,

      ok, hab verstanden, wie Du das meinst.
      Aber wie kriege ich das hin, dass das Skript nur jeden zweiten Montag angezeit wird...

      if( date('D',time()) == "Mon")

      würde heißen nur Montags.

      if( date('H',time()) => 9 && date('H',time()) <10 )

      würde heißen zwischen 9:00 und 10:00h

      if ( date('i',time()) => 0 && date('i',time()) <10 )

      würde heißen nur zwischen 9:00 und 9:10h

      OK, das ist klar, aber wie mache ich, dass, dass jetzt nur jeder zweiter Montag, d.h. alle zwei Wochen das Skript ausgeführt wird?

      GLG Diana

      1. Hi Diana,

        dazu wollte ich grad auch antworten habe aber nicht`s zum Thema Date und Tagesname gefunden.

        Also nachdem das eine geklärt ist, nun das mit dem jeden 2. Montag kannst Du so lösen.

        Erzeuge eine Datei namens: soll_ich.txt
        schreib in diesen den Text ja_2003.10.27:

        Lies diese Datei nun jedes mal aus und überprüfe ob Montag ist.
        Wenn Montag ist überprüfst Du den String auf ja_2003.10.27 .
        Falls das stimmt, löscht Du den inhalt der Datei -> Nur montags zwischen 9 und 10 und setze einenen neuen Wert
        nein_2003.11.03 also Datum + 7 Tage.
        Dafür hat PHP meines Wisens nach Funktionen.
        Wie du Texte splittest ist klar oder?
        Ausserdem musst Du das Datum noch vergleichen.

        So Du denkst jetzt sicher der Matze hat nun alles verballhornt... Denn beim 2. Zugriff, würde das schon wieder nicht funktionieren.

        Aber nein doch . Du musst bei der Abfrage prüfen, ob das Datum in dem String heute oder 14 Tage in der Zukunft liegt.
        Das dürfte auch nicht schwierig sein oder? Vergiss das "ja" nicht.

        Und bei allem anderen ist nun der 1. Montat und nicht 9 -10 Uhr.

        Wäre schön, wenn das nun jemand in ein PHP Code packen könnte.
        Ich kann kein PHP :-))

        Gruss Matze

        1. Hallo Diana,

          PHP kanns auch anders...

          echo strtotime ("now"), "\n";
          echo strtotime ("10 September 2000"), "\n";
          echo strtotime ("+1 day"), "\n";
          echo strtotime ("+1 week"), "\n";
          echo strtotime ("+1 week 2 days 4 hours 2 seconds"), "\n";
          echo strtotime ("next Thursday"), "\n";
          echo strtotime ("last Monday"), "\n";

          Schau Dir mal diese mächtige Funktion an.

          Du baust Dir eine Funktion. Die ermittelt, welches der erste Tag im Monat ist. Schau, ob es ein Montag ist. Wenn ja, dann einmal, sonst ermittelst Du eben zweimal "next Monday" und schon weißt Du, welches der zweite Montag im Monat ist. Und wenn Du jetzt noch zweimal weiterschaltest, dann hast Du auch den vierten. Schau, ob der noch im seleben Monat liegt, wenn ja -> Treffer.

          Ich habe noch nicht probiert, ob man auch "second Monday" eingeben kann. Kannst Du ja mal hier posten.

          Grüße

          Tom

          1. Hi Tom,

            die Idee ist sogar deutlich besser. :-))

            Tja wenn man PHP könnte.

            Gruss Matze

          2. Hallo Diana,

            <?php  ###kalender.php###

            echo time()."<br>";
            echo date("d.m.Y H:i:s")."<br>";
            echo strtotime("second Monday",time())."<br>"; ### funktioniert nicht
            echo date("d.m.Y H:i:s",strtotime("next Monday",time()))."<br>";  ### funktioniert

            ?>

            kleines Testscript. Wolltest Du jeden zweiten Montag, oder jeden zweiten Montag im Monat?

            Mit der Funktion kannst Du aber alles ausrechnen. Ggf. musst Du sie ein paarmal schachteln oder auch hintereinander ausführen lassen. Da sind Deiner Fantasie keine Grenzen gesetzt.

            Grüße

            Tom

            1. Hi Tom

              Wolltest Du jeden zweiten Montag, oder jeden zweiten Montag im Monat?

              Ich möchte jeden zweiten Montag, d.h. alle zwei Wochen das Scrit starten ... komme durch das Ganze jetzt nicht mehr durch.

              Was soll ich jetzt nehmen :-)))

              GGGLG, Diana

              1. Hallo Diana,

                da nimmst Du natürlich die dritte von zwei Möglichkeiten ;-)

                Ich möchte jeden zweiten Montag, d.h. alle zwei Wochen das Script starten:

                Du baust Dir mit Hilfe der Funktion strtotime() oder mit der Tastatur eine Variable, die die Montage eines Jahres speichert:

                $Montage2003=array("nicht enthalten","06.01.2003","13.01.2003","20.01.2003","27.01.2003","...");

                Dann hast Du alle 52 Montage (musste erst nachzählen, hätten auch 53 sein können) des Jahres gespeichert.

                Nun musst Du nach der Ermittlung des Datums nur noch mit der Funktion
                $montagnummer = array_search ( $suchdatum, $Montage2003 [, bool strict])

                herausfinden, ob das Datum in der Liste steckt ($montagnummer > 0) und ob es ein gerader oder ungerader Montag ist.

                Achte darauf, dass ich als ersten Wert "nicht enthalten" (kannst auch "blahblah" nehmen) in das Array geschrieben habe. Days hat zwei Gründe:
                1. Die Wochennummer ist gleich dem Index des Datums im Array, denn Arrays fangen in PHP ja bei 0 an zu zählen.
                2. Wenn Du mit array_search() fragst, ob der Montag enthalten ist, und er ist nicht im Array, dann liefert Array_Search() false. Das müsste man dann erst wieder mit Ergebnis !== false ausschließen. Einfacher ist es, direkt den Index als Ergebnis auszuwerten. Da 0 sich aber bei numerischen Vergleichen wie false verhält, haben wir einfach den Index 0 mit einem Fremdwert belegt.

                Da Verfahren mit einer solchen Variablen ist wesentlich schneller, als wenn man diese Datums-Monsterfunktion einsetzt.

                Na, und 2004 kannst Du dann das Update-Service-Pack "Montage2004" verkaufen ;-))

                Ich hoffe, Du kommst nun zurecht.

                Liebe Grüße

                Tom

      2. Hallo Daina,

        OK, das ist klar, aber wie mache ich, dass, dass jetzt nur jeder zweiter Montag, d.h. alle zwei Wochen das Skript ausgeführt wird?

        du könntest mit date('W') die Wochennummer ermitteln, und dein Formular dann nur in geraden (oder ungeraden) Wochen ausgeben (wenn date('W')%2 0 ergibt hast du einge gerade Woche, sonst eine ungerade (->http://de3.php.net/language.operators.arithmetic))

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|