Shell / Batch Script um mehrere PHP Dateien gleichzeitig auszuführen

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

  • Shell / Batch Script um mehrere PHP Dateien gleichzeitig auszuführen

    Wir haben eine Jobtabelle. In dieser Tabelle sind verschiedene Parameter gespeichert, die von einem PHP Script File verarbeitet werden.
    Bei diesem Skript handelt es sich um verschiedene Datenbank und Filesystem Operationen. Je Skript gibt es eine Auführungsdauer von ca 1 min bis 30 min. Jedes Skript macht also anhand
    der Jobid seine Arbeit. ( z.B. jobexecuter.php?jobid=15 … jobid=19… jobid=23). Da es sich um PHP Skripts handelt ist die PHP Execution Timout auf 1 h gesetzt in der php.ini. PHP arbeitet nicht im Safemode. Die Skripts werden nur in einer Intranetumgebung ausgeführt.

    Über einen Webbroser kann ich nun jeweils die einzelnen jobs über meinen jobexecuter anhand der Jobid manuell ausführen lassen (e.g. ’ jobexecuter.php?jobid=15’). Diese Funktionalität ist gegeben und funktioniert auch einwandfrei.


    Jetzt meine Frage:
    Gibt es eine Möglichkeit das Vorgehen zu Automatisieren. Also ein Batch Skript (Windows) bzw. shellscript(Unix) zu erstellen, das mir die aktuellen Jobids aus der Datenbank holt und dann in einem Batch Skript z.b.

    Php –f jobexecuter.php 15
    Php –f jobexecuter.php 18
    Php –f jobexecuter.php 19

    aufruft.

    Der Sinn dabei ist, dass meine Jobskripte im Hintergrund ablaufen können und dann über geplante Tasks(Windows) oder die Crontab (Unix) laufen koennen,

    Für das laden der jobids könnte ich ein weiteres php script erstellen das mir einen Array mit Ids zurueckgibt. Aber wie kann ich diesen Array an das Batch File zurueckgeben, so das die verschiedenen „Php –f jobexecuter.php x“
    Anhand der Array Values in einer Batch Schleife ausgeführt werden können.

    Pseudocode job.bat

    Php –f Getids.php > Array

    Foreach (Array as Jobid)
    { Php –f jobexecuter.php Jobid
    }


    Was ganz wichtig wäre: Wie kann ich erreichen dass die PHP Executions nicht nacheinander ablaufen sondern gleichzeitig. Gibt es eine möglichkeit dafür in einem batch Skript die PHP Execution als Kindprozesse des aktuellen PHP Prozesses ablaufen zu lassen (Stichwort Multithreading). Oder könnte man für jeden Schleifendurchlauf eine Komandozeilen Fenster aufpoppen lassen.

  • #2
    Windows?
    Dann könnte folgender Batch funktionieren:
    Code:
    start Php –f jobexecuter.php 15
    start Php –f jobexecuter.php 18
    start Php –f jobexecuter.php 19
    Wir werden alle sterben

    Kommentar


    • #3
      würden diese scripte denn dann zeitgleich abgearbeitet werden oder nacheinander?

      Kommentar


      • #4
        Warum probierst du das nicht selber aus?
        When executing an application that is a 32-bit GUI application, CMD.EXE does not wait for the application to terminate before returning to the command prompt. This new behavior does NOT occur if executing within a command script.
        Aus: http://www.robvanderwoude.com/ntstart.html
        Wir werden alle sterben

        Kommentar

        Lädt...
        X