Cornjob Problem

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

  • Cornjob Problem

    Hallo,

    Mein PHP Script hat 2 Zustände:

    1) Auftrag wurde beendet und wartet auf einen neuen Auftrag
    2) Besetzt bzw. führt einen Auftrag aus

    Nun soll das Script nur dann ausgeführt werden wenn sich das Script in dem 1 Zustand befindet.

    Wie könnte man soetwas realisieren?

    Kann man einen Cornjob durch ein PHP Script ausführen (wenn zustand=1) oder durch perl bzw welche Möglichkeiten gibt es da?


    Danke.

  • #2
    Leg in deinem Script am Anfang ne Datei "lock.dat" in nem Verzeichnis an (per touch) wenn die Datei noch nicht existiert. Führe dann das Script aus. Nach Ausführung, lösche diese Datei wieder (unlink)

    Existiert die Datei bereits, wird das Script gerade ausgeführt und du führst deine Befehle nicht weiter aus sondern lässt das Script terminieren.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Interessant, danke für den Hinweis.

      Eine weitere Frage wäre dann, ob ich einen Cornjob durch ein PHP Script aufrufen kann?

      Ich könnte mir eine PHP Datei vorstellen in der ich prüfe ob die Datei vorhanden ist oder nicht wenn nein, dann ruft er einen Cornjob auf, dass das Script startet und wenn das Script fertig ist, der Cornjob gestoppt wird. Ist soetwas möglich bzw mit welchen Befehlen?

      Kommentar


      • #4
        die rolle von cronjob ist in dieser kette nicht klar.
        grundsätzlich - exec() u.ä.

        Kommentar


        • #5
          Äh was hat man davon mit einem php Script einen cronjob aufzurufen ?
          Also ich finde die Funktion praktischer mit einem Cronjob (zeitgesteuerter aufruf) eine php Datei aufzurufen die dann diverse Tätigkeiten ausführen soll.

          Kommentar


          • #6
            Mir scheint, du kannst Cronjob nicht nur nicht korrekt schreiben, sondern du hast auch nicht ganz verstanden, was es ist.
            Cronjobs ruft man nicht auf, sie werden automatisch zur eingestellten Zeit ausgeführt. Üblicherweise stoppt man sie auch nicht, denn wie jeder andere Job terminieren sie von selbst, sobald sie fertig sind.

            Davon abgesehen ist es Unsinn, ein PHP-Script A einen Job anstoßen zu lassen, der wiederum ein PHP-Script B aufruft.
            1. Kannst du B auch direkt ausführen, z.B. mit include.
            2. Wer startet Script A? Henne oder Ei?

            Erkläre bitte dein konkretes Problem.

            Kommentar


            • #7
              Das konkrete Problem ist, dass ich einen PHP Crawler geschrieben habe und an diesen Crawler nun automatisch Aufgaben vergeben will, welche Seite er zu crawlen hat. Wenn der Crawler mit der Aufgabe fertig ist und die Seite komplett indexiert hat, soll die nächste Aufgabe ausgeführt werden.

              Ich habe eine SQL Tabelle in der die auszuführenden Aufgaben gespeichert sind. Nun soll eine Datei diese Aufgaben an den Crawler weiterleiten und dies möglichst automatisch. Wenn der Crawler mit der Aufgabe fertig ist, soll die nächste Aufgabe an den Crawler weitergeleit werden.

              Die Problematik liegt nun darin, dies möglichst automatisch ablaufen zu lassen. Wie von onemorenerd erkannt wurde, hatte ich noch nie etwas mit Cronjobs zutun.

              Kommentar


              • #8
                Na dann lass doch deinen Crawler als Cronjob laufen (z.B jede minute).

                Am anfang des Scripts prüfst du ab ob die lockdatei existiert. Wenn nicht lies eine Zeile aus der Datenbank aus und leg los.
                Am ende des scripts löschst du die lockdatei und den Datenbankeintrag.

                Oder verstehe ich jetzt etwas total falsch
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Kommentar

                Lädt...
                X