Exotische PHP Frage: Auf geöffneten Shell zugreifen

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Jopi24.

    Exotische PHP Frage: Auf geöffneten Shell zugreifen

    Moin,

    ich möchte derzeit etwas mit PHP realisieren, was jedoch ein Shell Execute benötigt, also es wird ein Konsolen Programm gestartet. PHP soll nun die Ausgabe der Konsole auslesen und gleichzeitig auch etwas in die Konsole schreiben. Die Konsole sollte aber auch nach mehrmaligen Aufruf des Scriptes die gleiche sein.

    Bereits gefunden habe ich proc_open() was auch dem nahe kommt was ich möchte, jedoch läuft mein Script solange, bis die Konsolenanwendung beendet wird, davor passiert keine Ausgabe und nach längerer Zeit bricht das Script wegen der max_execution_time ab.

    Dodo schrieb:

    jedoch läuft mein Script solange, bis die Konsolenanwendung beendet wird, davor passiert keine Ausgabe und nach längerer Zeit bricht das Script wegen der max_execution_time ab.
    Das kann man unterbinden. Mom, ich wusste mal wie das geht. Ich wühl mal in den Snippets.

    • set_time_limit() wenn du nur das eine Skript verlängern willst (funzt nicht bei safe_mode=1)
    • max_execution_time() auf 0 setzen geht afaik für unendlich
    • Mit Stufen arbeiten : Stufe fertig, header setzen mit nächster StufenId und die nächste Stufe abarbeiten, die ProcessId irgendwo abspeichern (Session, Datenbank, Parameter wie StufenId)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mangafreak1995“ ()

    Also die Scriptlaufzeit Variable kenne ich natürlich, aber ich wollte das Script nicht länger laufen lassen, weil ja auch während dessen keine Ausgaben gemacht werden, sondern erst wenn der Prozess beendet ist.

    Heißt also Script startet den Prozess.
    Anderes Script holt sich den Stream, ließt alles aus was neu ist, gibt es aus, script fertig.
    Weiter Script aufruf, Script ließt wieder den Stream aus, gibt ihn aus, fertig.

    Also nicht das es solange läuft wie der Prozess, das ist unnötig und auch nicht performant, da der Prozess dauerhaft offen bleibt, über Tage, Wochen, Monate, Jahre.

    Habe derweil auch mal weiter gesucht, glaube das ist so nicht möglich und deswegen werde ich mir wohl kleines VB Tool machen, welches über einen kleinen WebServer verfügt, das Tool startet den Prozess und wenn das PHP Script eine lokale URL aufruft, schickt der WebServer die Informationen aus dem Stream an das Script, dies bekommt die Informationen, gibt sie aus und das Script ist durchgelaufen.
    Und ich dachte es geht um was, was etwas länger dauert und nicht über Monate laufen soll. Nehm' doch 'nen Cronjob, der Daten aus 2 Dateien ausliest. Wenn sie ungleich sind vom Inhalt (reicht ja ein md5sum beider Dateien) dann werden beide gleich gesetzt und du gibst das im Cronjob aus/loggst das Ganze. Auf dem Server selbst lässt du einfach ein Skript laufen, oder hast du keine Möglichkeit Python oder normales bash laufen zu lassen auf deinem Server ?