BUG: max_execution_time bei Symcon 5.0 auf Raspberry ohne Funktion

mir ist eben aufgefallen, dass bei Symcon 5.0 auf Raspberry die ‚max_execution_time‘ nicht wirkt. Die Scripte laufen alle endlos.
Könnt Ihr da bitte mal draufgucken?
Viele Grüße
Jürgen

Setzt du die in der php.ini oder im Skript!?

paresy

in der php.ini

Jürgen

Das funktioniert hier problemlos. Wie ist denn dein Skript aufgebaut? Kann es sein, dass dein Skript irgendwo fest-hängt, sodass nicht mal PHP es abbrechen kann?

paresy

nein, es betrifft alle Skripte. Zu Probe habe ich ein einfaches Testskript geschrieben:

<?
	for($i = 0; $i<35; $i++){IPS_Sleep(1000);}
?>

Das läuft sauber 35sec durch. max_execution_time steht auf 30sec.

Ich sollte noch erwähnen, dass ich die Raspberry-Version auf einem Odroid-C2 mit Debian Stretch laufen lassen.
Ich gehe aber mal davon aus, dass der Befehl nicht im Betriebssystem verankert ist, oder?

Jürgen

Ich muss das Thema nochmal aufwärmen. Ich habe jetzt IPS 5.0-2698 probehalber auf einem Raspi laufen. Auch da wird das oben beschriebene Script nicht abgebrochen. Irgendwie ist da der Wurm drin. Könnt Ihr da nochmal draufgucken?

Vielen Dank
Jürgen

Ja, leider ist dies ein Problem mit PHP in der Konfiguration welche wir nutzen. Bisher habe ich auch noch keine Lösung gefunden und befürchte eher, dass ich da bei PHP einen Bug-Report schreiben muss. Somit wird eine Lösung leider noch etwas dauern.

paresy

Ok, dann brauche ich den Fehler nicht weiter in meiner Konfiguration suchen.
Gibt es einen Workaround, wie ich festgefahrene Prozesse ohne Neustart abschießen kann?
Viele Grüße
Jürgen

Nein. Die Frage ist eher, warum diese festgefahren sind. max_execution_time greift auch nur, wenn es tatsächlich innerhalb von PHP fest ist. Wenn es eher ein Fehler auf Systemebene ist, sodass deine Skripte feststecken (z.B. gerne mal Netzwerk oder I/O) dann würde dies trotzdem nicht helfen. Du kannst versuchen mit dem Debugger (gdb) ran zu gehen und zu sehen wo die PHP Threads festhängen. Was sind dies für Skripte? Sind es immer die gleichen?

paresy

Grundsätzlich läuft mein System stabil. Bei der Entwicklung neuer Funktionen passiert es mir allerdings immer mal wieder, dass ich Endlosschleifen z.B. mit do-while versehentlich einbaue. Um diese dann abzubrechen ist dann immer ein Neustart erforderlich. Auch

service symcon restart

hilft nicht, da IPS auf die Abarbeitung der Endlosschleife wartet.
Viele Grüße
Jürgen

Ok - das ist natürlich ein valider Fall. Leider kommt du in diesem Fall nicht um einen Neustart drum-rum bis der Fehler behoben wird.

paresy