Hallo pbundschuh,
ich hatte vor einiger Zeit eine ähnliche Umsetzung und habe es wie folgt gemacht:
Sobald ich das Shellscript gestartet habe, hole ich mir von diesem die zugewiesene PID (ProcessID), und speichere diese zwecks späterer Verwendung in die Datenbank. Das Script selbst führt n Prozesse aus, in meinem Fall das herunterladen und konvertieren von Bildern. Jeder erfolgreich beendete Schritt wird samt einiger Daten in der Datenbank anhand der PID festgehalten. Den aktuellen Stand eines Importprozess hole ich mir nun mittels AJAX und einem PHP Script, und gebe diese Informationen auf der Webseite aus. Da bei mir ein Job meistens 5-15 Sekunden benötigt, wird mittels AJAX alle 8 Sekunden das PHP Script neu geladen, und ich bekomme somit immer den aktuellen Stand Angezeigt. Echtzeit ist das nicht, eine andere Möglichkeit wüsste ich allerdings jetzt auch nicht.
Ein kleiner Tipp zu angestoßenen Shellscripten (falls du dies nicht schon beachtet hast): Manchmal kann es passieren, dass angestoßene Shellscripte sich aufhängen und dadurch nicht beendet werden. Dafür lasse ich alle 30 Minuten einen Job laufen, welcher die Aufgabe hat alle eingetragenen und noch nicht fertigen Prozesse anhand der PIDs aus der Datenbank gegen zu
prüfen. Dabei wird anhand der PID auf dem Server und der zu konvertierenden Bildmenge -anhand dessen kann man eine durchschnittliche Mindestlaufzeit vom Shellscript berechnen- geprüft ob der Prozess noch läuft. Wenn der Prozess überfällig ist, wird er abgeschossen und in der Datenbank entsprechend markiert. Das ganze lässt sich natürlich auf dein vorhaben entsprechend anpassen.
cheers