phpbar.de logo

Mailinglisten-Archive

[php] Timeout bei Socket-Communication

[php] Timeout bei Socket-Communication

Merg Ruth (TPM/DM) * php_(at)_phpcenter.de
Thu, 18 Apr 2002 14:43:26 +0200


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