Schreiben Sie einen sockel und Umgang mit Defekten Rohrleitungen

Habe ich ein code in PHP, eine Verbindung zu einem socket. Ich habe immer eine Pfeife, die nur zeitweise während des Schreibens. Die Probleme scheint zu gehen Weg, wenn schreiben an das Rohr wieder. Ich Frage mich, was ' s benötigt (der sicherste Weg), um sich zu erholen. Ich bin auch gefragt, ob socket_write zurückgeben kann, ohne das schreiben der vollständigen Zeichenfolge, die übergeben wurde, hinein. Hier ist, was ich derzeit habe.

function getSocket() {
  $socket = socket_create( AF_UNIX, SOCK_STREAM, 0 );
  if ( $socket === FALSE ) {
    throw new Exception(
      "socket_create failed: reason: " . socket_strerror( socket_last_error() ));
    }
  }

  $result = socket_connect($socket, $address);
  if ($result === false) {
    throw new Exception("socket_connect() failed.\nReason: ($result) " .
        socket_strerror(socket_last_error($socket)));
  }
  return $socket;
}

function writeSocket($stmt) {
  $tries = 0;
  $socket = getSocket();
  do {
    //Is is possible that socket_write may not write the full $stmt?
    //Do I need to keep rewriting until it's finished?
    $writeResult = socket_write( $socket, $stmt, strlen( $stmt ) );
    if ($writeResult === FALSE) {
      //Got  a broken pipe, What's the best way to re-establish and 
      //try to write again, do I need to call socket_shutdown?
      socket_close($socket);
      $socket = getSocket();
    }
    $tries++;
  } while ( $tries < MAX_SOCKET_TRIES && $writeResult ===  FALSE);
}

InformationsquelleAutor Juan Mendes | 2011-08-26

Schreibe einen Kommentar