Hab ich noch gestern abend mit der neuesten Version versucht: kein Erfolg.
IPS gelöscht und neu installiert.
Hab dann nur ein einziges Skript installiert (das bisher in über 99% der Aufrufe problemlos lief und hatte dann gleich dieses Problem (Msg #3), d.h. das Skript hat das Semaphor ‚BluAktiv‘ gesetzt und nach Beendigung nicht mehr freigegeben.
Abhilfe durch
18:19:14[pi@RaspiB3:~] $ sudo /etc/init.d/symcon status
IP-Symcon is running.
18:19:21[pi@RaspiB3:~] $ sudo killall php
php: Kein Prozess gefunden
18:20:14[pi@RaspiB3:~] $ sudo /etc/init.d/symcon status
IP-Symcon is running.
18:20:19[pi@RaspiB3:~] $ sudo /etc/init.d/symcon stop
IP-Symcon stopped
18:22:03[pi@RaspiB3:~] $ sudo /etc/init.d/symcon start
IP-Symcon started with PID 8733
18:22:33[pi@RaspiB3:~] $
Damit kann ich das Skript wieder starten und finde folgendes im Log:
18:46:49 | 00000 | SUCCESS | Kernel | *** IPS BETRIEBSBEREIT
18:47:55 | 52624 | DEBUG | ScriptEngine | Executing ScriptID: Präsenz\BlE-Scanner ~ Sender: Execute
18:47:55 | 52624 | DEBUG | ScriptEngine | Executing ScriptID: Präsenz\BlE-Scanner ~ Sender: RunScript
18:48:03 | 00000 | WARNING | ScriptEngine | Semaphore 35948 for ScriptID 52624 was not released
18:48:03 | 00000 | WARNING | ScriptEngine | Ergebnis für ScriptID #52624: <br />
<b>Fatal error</b>: Call to undefined function mb_convert_case() in <b>/usr/share/symcon/scripts/Bluetooth_Scanner.ips.php</b> on line <b>547</b><br />
Die letzten 3 Zeilen stehen auch in der Ansicht ‚Meldungen‘.
Lasse ich mein modifiziertes Testskript laufen,
<?
// Test_Semaphoren.ips.php
$Semap = 'BluAktiv';
if (IPS_SemaphoreEnter ($Semap, 1000)) {
print("
Ablauf: $Semap gesetzt");
if (IPS_SemaphoreEnter ($Semap, 10)) {
print("
Fehler: $Semap doppelt gesetzt");
} else {
print("
Ablauf: $Semap abgewiesen, weil bereits gesetzt");
} // Ende Semaphore-Kreis2
IPS_SemaphoreLeave ($Semap); // und freigeben
print("
Ablauf: $Semap zurückgesetzt");
if (IPS_SemaphoreEnter ($Semap, 10)) {
print("
Ablauf: $Semap wiederholt gesetzt");
} else {
print("
Ablauf: $Semap abgewiesen, weil bereits zum 2ten mal gesetzt");
} // Ende Semaphore-Kreis2
IPS_SemaphoreLeave ($Semap); // und freigeben
print("
Ablauf: $Semap wieder zurückgesetzt");
} else {
print("
Fehler: $Semap fremdgesetzt");
} // Ende Semaphore-Kreis1
?>
kommt
Fehler: BluAktiv fremdgesetzt
aber auch
Warning: Parameter type of Name does not match in /usr/share/symcon/scripts/Test_Semaphoren.ips.php on line 5
Fehler: 35948 fremdgesetzt
wenn ich $Semap = 35948 eingebe, jedoch
Ablauf: 35948 gesetzt
Ablauf: 35948 abgewiesen, weil bereits gesetzt
Ablauf: 35948 zurückgesetzt
Ablauf: 35948 wiederholt gesetzt
Ablauf: 35948 wieder zurückgesetzt
wenn $Semap = ‚35948‘
d.h. das Skript endete mit einem Fehler, aber IPS hat gesetzte Semaphoren nicht gelöscht.
Das ist noch viel schlimmer als in den Vorgängerversionen, obwohl ja jetzt anscheinend auch wieder numerische Sepaphoren akzeptiert werden :mad:
Viele Grüsse
Harald