(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_create_pair — Crea un par de sockets indistinguibles y los almacena en una matriz
$domain
   , int $type
   , int $protocol
   , array &$fd
   ) : bool
   socket_create_pair() crea dos sockets conectados e
   indistinguibles y los almacena en fd.
   Esta función se usa comúnmente en IPC (InterProcess Communication - Comunicación entre procesos).
  
domain
       El parámetro domain especifica la familia de
       protocolos que se va a usar en el socket. Véase socket_create()
       para la lista completa.
      
type
       El parámetro type selecciona el tipo de comunicación
       que va a usar el socket. Véase socket_create() para la
       lista completa.
      
protocol
       El parámetro protocol establece el protocolo
       específico dentro del domain especificado a usar
       cuando se comunica con el socket devuelto. El valor apropiado se puede recuperar por
       nombre usando getprotobyname(). Si
       el protocolo deseado es TCP, o UDP, se pueden usar también las constantes
       SOL_TCP, y SOL_UDP
       correspondientes.
      
Véase socket_create() para la lista completa de protocolos soportados.
fdReferencia a una matriz en la cuál los dos recursos socket serán insertados.
   Devuelve TRUE en caso de éxito o FALSE en caso de error.
  
| Versión | Descripción | 
|---|---|
| 5.3.0 | Esta función ya está disponible en las plataformas de Windows. | 
Ejemplo #1 Ejemplo de socket_create_pair()
<?php
$sockets = array();
/* En Windows necesitamos usar AF_INET */
$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);
/* Configurar el par de sockets */
if (socket_create_pair($domain, SOCK_STREAM, 0, $sockets) === false) {
    echo "socket_create_pair failed. Reason: ".socket_strerror(socket_last_error());
}
/* Enviar y Recibir Información */
if (socket_write($sockets[0], "ABCdef123\n", strlen("ABCdef123\n")) === false) {
    echo "socket_write() failed. Reason: ".socket_strerror(socket_last_error($sockets[0]));
}
if (($data = socket_read($sockets[1], strlen("ABCdef123\n"), PHP_BINARY_READ)) === false) {
    echo "socket_read() failed. Reason: ".socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);
/* Cerrar los sockets */
socket_close($sockets[0]);
socket_close($sockets[1]);
?>
Ejemplo #2 Ejemplo IPC de socket_create_pair()
<?php
$ary = array();
$strone = 'Mensaje del Padre.';
$strtwo = 'Mensaje del Hijo.';
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false) {
    echo "socket_create_pair() failed. Reason: ".socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if ($pid == -1) {
    echo 'Could not fork Process.';
} elseif ($pid) {
    /*padre*/
    socket_close($ary[0]);
    if (socket_write($ary[1], $strone, strlen($strone)) === false) {
        echo "socket_write() failed. Reason: ".socket_strerror(socket_last_error($ary[1]));
    }
    if (socket_read($ary[1], strlen($strtwo), PHP_BINARY_READ) == $strtwo) {
        echo "Recieved $strtwo\n";
    }
    socket_close($ary[1]);
} else {
    /*hijo*/
    socket_close($ary[1]);
    if (socket_write($ary[0], $strtwo, strlen($strtwo)) === false) {
        echo "socket_write() failed. Reason: ".socket_strerror(socket_last_error($ary[0]));
    }
    if (socket_read($ary[0], strlen($strone), PHP_BINARY_READ) == $strone) {
        echo "Received $strone\n";
    }
    socket_close($ary[0]);
}
?>