Hallo Leute,
in einem Skript habe ich einen „eigenen“ ClientSocket. Alles gut soweit - bis auf den Fall das die Daten nicht wie erwartet zurückkommen…
[PHP //Now receive reply from server
if(socket_recv ($sock, $buf, $ResponseLen, MSG_WAITALL ) === FALSE) {
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
IPS_LogMessage("GPIO Socket: ", "Fehler beim beim Empfangen „.[$errorcode].“ ".$errormsg);
return;
}]
Dann "hängt" der Thread und wenn das ein paar mal passiert ist, dann hängt IPS...:mad:
Man könnte jetzt nach meiner Recherche an verschiedenen Stellschrauben drehen:
- MSG_WAITALL durch MSG_DONTWAIT ersetzen
-
```php
socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>1,"usec"=>0));
setzen
- bool stream_set_timeout ( resource $stream , int $seconds [, int $microseconds = 0 ] ) benutzen
Aber welche wäre der „richtige“ Ansatz?
Joachim