Datenfluss mit Serversocket und SetProperty bringt PHP in eine Endlosschleife

Hallo zusammen.

Habe mal wieder ein Problem.

Da es technisch nicht anderse geht das ich den Serversocket für kurz Abschalten muss damit der Client die Verbindung richtig abbaut.

Habe nun folgenen Sript geschreiben


		$paID= IPS_GetInstance($this->InstanceID);
		$connectionID=$paID['ConnectionID'];
		if ($connectionID ==0) return;
.
.
.
              IPS_Sleep (100);
		
		IPS_SetProperty ($connectionID ,"Open",false);
		IPS_ApplyChanges($connectionID );
		IPS_Sleep (100);

		IPS_SetProperty ($connectionID ,"Open",true);
		IPS_ApplyChanges($connectionID );


Nun wenn nun das Modul starte bleibt die Konsole Hängen.
Und ich habe keine Möglichkeit was einzustellen.

Hat von euch jemand eine bessere Funktion um Serversocket aktiv bzw. inaktiv zu schalten

Danke

Das geht eleganter. Du kannst das Feld ‚Type‘ im Datenfluss des Serversocket benutzen.
Wenn du das auf 2 setzt, wird die passende Verbindung von ‚ClientPort‘ und ‚ClientIP‘ getrennt.

Ebenso kannst du beim Empfangen damit erkennen ob ein Client verbunden, getrennt wurde oder Daten sendet:
IPSNetwork/module.php at 0f925aff93ec8d5c9dfce65ecc17b83d957f3ee8 · Nall-chan/IPSNetwork · GitHub
Michael

Habe es nun so gemacht


        $Server['DataID'] = '{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}';
        $Server['ClientIP'] = $ClientIP;
        $Server['ClientPort']= (int)$ClientPort;
        $Server['Buffer'] =  mb_convert_encoding($response,'UTF-8');
		
		
        $ServerJSON = json_encode($Server);
		$this->SendDataToParent($ServerJSON);
		
		$Server['DataID'] = '{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}';
        $Server['ClientIP'] = $ClientIP;
        $Server['ClientPort']= (int)$ClientPort;
        $Server['Buffer'] =   mb_convert_encoding('','UTF-8');;
		$Server['Type'] =  2;
		
		$ServerJSON = json_encode($Server);
		echo $this->SendDataToParent($ServerJSON);


aber nun kommt eine Warnung
19.03.2020 10:50:08 | Server Socket | Error reading: Bad file descriptor

was mache ich noch falch

Sicher das der Client überhaupt (noch) verbunden ist?
Ich würde auch kein mb_convert_encoding benutzen, sondern nur utf8_encode.
Michael