Einzelnen Beitrag anzeigen
Alt 09.09.2008, 13:24  
HackReb
Neuer Benutzer
 
Registriert seit: 09.09.2008
Beiträge: 5
HackReb befindet sich auf einem aufstrebenden Ast
Standard 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.
HackReb ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten