Hallo,
ich habe ein allgemeines Script für meine Rollläden, welches über Parameter bzw. SQL-Zugriffe gesteuert wird, damit es weiß, welchen Rollladen es hoch- bzw herunterfahren soll. Wenn ich das für jeden Rollladen einzeln aufrufe, klappt das auch einwandfrei. Wenn aber am Morgen alle Rollläden fast gleichzeitig hochgefahren werden sollen, bleiben einige stehen, als ob der Hochfahr-Befehl während der Fahrt noch einmal abgesetzt wäre.
Nun meine Frage:
Wenn dieses allgemeine Script mehfach gleichzeitig aufgerufen wird, sind dann mehrere unabhängige Instanzen davon im Hauptspeicher oder nur eine, deren Variable dann überschrieben werden ?
Es können mehrere Instanzen des gleichen Scripts so oft parallel voneinander laufen, wie PHP Slots vorhanden sind. Die Variablen der parallel laufenden Scripte werden auch parallel beschrieben. Sonst Semaphore benutzen.
aha - danke; und woher kenne ich die Anzahl der PHP-Slots und was passiert, wenn es einer zu wenig ist ?
ok - habe ich das richtig verstanden , dass ein Script standardmäßig 10 mal gleichzeitig im Speicher sein kann oder bedeutet das, dass 10 Scripts parallel laufen können ?
Ja, das bedeutet es.
hm - die erste Variante oder die zweite ?
Beides geht.
Ein simples Beispiel:
Script 1 mit der ID 20500:
sleep(20);
Setvalue(12345, true);
Script 2:
IPS_RunScript(20500);
Wenn man nun Script 1 ausführt und Script 2, so läuft Script 1 zweimal parallel im Speicher. Es belegt alsi 2 PHP Slots in IPS. Und die Variable des Scripts 1 wird zweimal true gesetzt.
ok - soweit klar; wenn ich jetzt für jeden Rollladen 2 Scripts habe, um sie hochzufahren und 6 Rollläden parallel gestartet werden, wäre es denkbar, dass theoretisch (z.B. durch schlechte Antwortzeiten beim SQL-Server) 12 Scripts auf einmal laufen (ganz von dem abgesehen, dass vlt. noch ganz andere Funktionen zu dem Zeitpunkt aktiv sind). Warten die dann, bis sie einen freien Slot bekommen oder überschreiben die sich gegenseitig im Speicher ?
Gehe mal im Objektbaum auf: Ansicht hinzufügen=>PHP Informationen. Dort siehst Du was in IPS passiert.
prima Tipp - habe eben die Situation simuliert und kurzzeitig waren alle Slots belegt. Mir ist jedoch nicht klar, was passiert, wenn die Slots nicht reichen. Ich werde den Wert jetzt einfach mal auf 20 erhöhen und es weiter beobachten. Danke dir nochmal.