(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_create_pair — Erzeugt ein Paar nicht zu unterscheidender Sockets und speichert sie in einem Array
$domain
   , int $type
   , int $protocol
   , array &$fd
   )
   socket_create_pair() erzeugt zwei nicht
   unterscheidbare, verbundene Sockets und speichert sie im Array
   fd. Diese Funktion wird allgemein bei der
   Inter-Prozess-Kommunikation (IPC) verwendet.
  
domain
       Der Parameter domain bestimmt die
       Protokollfamilie, die von den Sockets benutzt werden. Eine komplette
       Liste finden Sie bei der Funktion socket_create().
      
type
       Der Parameter type bestimmt den
       Kommunikationstyp, den die Sockets verwenden sollen. Eine komplette
       Liste finden Sie bei der Funktion socket_create().
      
protocol
       Der Parameter protocol setzt das spezifische
       Protokoll innerhalb der angegebenen domain,
       das vom zurückgegebenen Socket für die Kommunikation benutzt wird.
       Der passende Wert kann ermittelt werden, indem der Name an die
       Funktion getprotobyname()übergeben wird. Wenn TCP
       oder UDP gewünscht werden, können auch die entsprechenden Konstanten
       SOL_TCP oder SOL_UDP
       benutzt werden.
      
Eine vollständige Liste aller unterstützter Protokolle finden Sie bei der Funktion socket_create().
fdReferenz auf das Array, in das die beiden Socket-Deskriptoren eingefügt werden.
   Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
  
| Version | Beschreibung | 
|---|---|
| 5.3.0 | Diese Funktion wurde für Windows-Plattformen wieder reaktiviert. | 
| 4.3.0 | Diese Funktion wurde aufgrund eines Fehlers für Windows deaktiviert. | 
Beispiel #1 socket_create_pair()-Beispiel
<?php
$sockets = array();
/* Unter Windows muss man AF_INET benutzen */
$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);
/* Socket-Paar erzeugen */
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets) === false) {
    echo "socket_create_pair fehlgeschlagen. Grund: ".socket_strerror(socket_last_error());
}
/* Daten senden und empfangen */
if (socket_write($sockets[0], "ABCdef123\n", strlen("ABCdef123\n")) === false) {
    echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($sockets[0]));
}
if (($data = socket_read($sockets[1], strlen("ABCdef123\n"), PHP_BINARY_READ)) === false) {
    echo "socket_read() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);
/* Sockets schließen */
socket_close($sockets[0]);
socket_close($sockets[1]);
?>
Beispiel #2 socket_create_pair()-IPC-Beispiel
<?php
$ary = array();
$strone = 'Nachricht vom Elternprozess.';
$strtwo = 'Nachricht vom Kindprozess.';
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false) {
    echo "socket_create_pair() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if ($pid == -1) {
    echo 'Konnte keinen Kindprozess erzeugen.';
} elseif ($pid) {
    /* Elternprozess */
    socket_close($ary[0]);
    if (socket_write($ary[1], $strone, strlen($strone)) === false) {
        echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($ary[1]));
    }
    if (socket_read($ary[1], strlen($strtwo), PHP_BINARY_READ) == $strtwo) {
        echo "Empfangen: $strtwo\n";
    }
    socket_close($ary[1]);
} else {
    /* Kindprozess */
    socket_close($ary[1]);
    if (socket_write($ary[0], $strtwo, strlen($strtwo)) === false) {
        echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($ary[0]));
    }
    if (socket_read($ary[0], strlen($strone), PHP_BINARY_READ) == $strone) {
        echo "Empfangen: $strone\n";
    }
    socket_close($ary[0]);
}
?>