eine Batch Datei gestartet, die einen PAUSE Befehl enthält.
Da das Fenster unterdrückt werden sollte und die Beendigung der Batch Datei abgewartet werden sollte, habe ich damit einen unendlichen lang laufenden PHP Task produziert, der auch nicht nach der maximum execution time automatisch beendet wurde.
Gibt es eine Möglichkeit so einen PHP Task via Konsole zu beenden? In meinem Fall habe ich einfach über den Win Task Manager den Win Command Prozessor beendet und damit auch den PHP Task gestoppt.
warum merkt eigentlich IPS nicht, dass der Thread hängt und die maximum execution time längst überschritten ist? Angezeigt wird der hängende php Thread ja.
Es gibt viele Gründe warum ein Script hängt. So wie hier, wo ein externer Prozess PHP warten lässt.
PHP beendet Scripte nur wenn ein Befehl fertig ausgeführt wurde.
Kann man auch gut bei Scripten mit Netzwerkkommunikation testen, erst wenn dort ein Timeout passiert, wird auch das Script abgebrochen.
In dein Fall gibt es kein Timeout, also wartet PHP ewig.
Michael
alles was Du schreibst ist richtig, nur als ich vor ein paar Jahren mit Symcon begonnen habe, da konnte man in Symcon eine maximale Laufzeit für Skripte einstellen und alle Skripte, die dieses Maximum überschritten haben, hat Symcon automatisch gekillt.
Das war eine sehr sinnvolle Funktion, die inzwischen leider verschwunden ist. Seitdem lese ich von Symcon-Seite nur noch Begründungen, was der Anwender falsch macht.
Das war nie Symcon welche das gekillt hat.
Es war immer PHP.
Und auch dort gab es schon Funktionen (snmp ?) welche gerne ein Script blockiert haben bzw abgestürzt sind und die PHP nicht mehr beenden konnte.
Die max. Scriptlaufzeit gibt es noch immer.
Michael
Ein einfaches Script mit sleep oder IPS_Sleep wird zwar nach 30 Sekunden rot, läuft aber bis zum Ende durch. Früher wurden die Scripte nach der eingestellten Zeit abgeschossen.
Du kannst nicht einfach IPS_Sleep(33000) machen.
In einem Befehl wird nie abgebrochen. Sondern erst anschließend.
Also 5 Mal IPS_Sleep(10000) und dazwischen eine Ausgabe machen. Was passiert dann?
Michael
Kann ich genauso bestätigen. Ärgerlich ist, dass ein fehlerhaftes Skript mit Endlosschleife durch den fehlenden Abschuss des Skripts zwangsläufig einen Symcon-Neustart erfordert.
Wie gesagt: Ich wünsche mir die Funktion zurück.
Aktuell gibt es unter RPi/Ubuntu tatsächlich das Problem, dass das set_time_limit nicht richtig greift. Die „roten“ Threads bei 90% der Probleme hier liegen jedoch eher im System-Bereich, wo das Timeout leider eh nicht greifen würde. Trotzdem sollten wir das set_time_limit Problem endlich mal lösen, damit die 10% der Fälle nicht mehr auftreten :rolleyes: