Shell scripte parallel ausführen

Moin,

ich habe ein Script, das update-Prozesse auf Controllern durchführen soll. Das mache ich mit shell_exec(‚curl …‘), was ätzend lange dauert, da es ca. 20 Controller sind und jeder etwa 1min braucht. Da frage ich mich: Kann diese curls nicht parallel anstubsen? Probiert habe ich shell_exec(‚curl … > /dev/null 2>&1‘), aber das brachte nix. Bin mir auch nicht sicher, ob das überhaupt eine gute Idee ist.

Danke,
Tom

Du könntest diesen Prozess auf zwei Skripte aufteilen. Eines startet dein shell-Dingsbums. Das andere ruft dieses Skript mit IPS_RunScriptEx auf. Du kannst dann noch einen Parameter mitgeben für was auch immer.
Ich habe das z.b. so

array("ER"=>$id)

$id ist bei mir eine Instanz-ID und ER ist ein frei definierbarer Name. Das array kann natürlich mehr als nur einen Index enthalten.
Im aufgerufenen Skript schaut das dann so aus

$ER=$_IPS["ER"];

In $ER kommt der Wert aus dem array vom aufrufenden Skript rein.
Worin liegt der Vorteil? Dass die aufgerufenen Skripte parallel laufen.

Einfach mit IPS_RunScriptText das shell_exec starten.
Michael

Ich würde allerdings aufpassen, nicht einfach haufenweise Prozesse anzustoßen und davon auszugehen dass die schon das richtige tun werden. Sonst hast du irgendwann hunderte Prozesse laufen, wenn sie aus irgendeinem Grund mal hängen und du es gar nicht merkst.

Dann würde ich das lieber sequenziell machen (Updates aufspielen muss ja auch nicht von jetzt auf gleich überall passieren) und jeweils auf den Abschluss des Prozesses warten, bevor ein neuer angestoßen wird (bspw per Skripttimer und Semaphore).

Hi,
Linux oder Windows? Bei linux bräuchte man nur ein & ans Ende packen.

Ralf