Mailinglisten-Archive |
Hallo,
ich habe ein PHP Script geschrieben, welches als Client agiert.
Mein Code sieht so aus:
...
// build TCP socket connection
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
if ($socket < 0) {
}
// socket is connected
$result = socket_connect ($socket, $127.0.0.1, $8500);
if ($result < 0) {
}
// sending to socket
$result = socket_write($socket, $in, strlen ($in));
if ($result < 0) {
}
// get response from server
if (($result = socket_read($socket,2048)) == false) {
}
// socket is closed
socket_close ($socket);
Folgendes Szenario:
Eine Message wird mit socket_write() auf den vorgegebenen Port geschrieben.
Das Server-Exe sollte normalerweise eine Antwort schicken. Aus irgendeinem
Grund schickt der Server keine Meldung. Daraufhin blockiert das Script und
wird erst nach max_execution_time = 30 sec abgebrochen.
Ziel:
Ich möchte maximal 10 sec auf Antwort warten, nachdem ich eine Message auf
den Socket geschrieben haben. Wenn die 10 sec. Vorbei sind, so werde ich
eine Fehlerbehandlung durchführen.
Frage:
Wie kann ich mein PHP Script so abändern, dass nach socket_write() maximal
10 sec gewartet wird, ohne dass das Script blockiert?
Ich habe bereits versucht, die Methode socket_set_timeout($socket, 2) nach
socket_write() aufzurufen, aber leider ohne Erfolg!
Wer weiss eine Lösung für mein Problem?
Danke und Gruß
Ruth Merg
PS: Ich verwende PHP 4.0.8
php::bar PHP Wiki - Listenarchive