(PHP 5 >= 5.1.0, PHP 7, PHP 8)
stream_socket_pair — Cria um par de fluxos de socket conectados e indistinguíveis
stream_socket_pair() Cria um par de fluxos de socket conectados e indistinguíveis. Esta função é normalmente usada em IPC (Comunicação Entre Processos, da sigla em inglês).
domain
A família de protocolos a ser usada: STREAM_PF_INET
,
STREAM_PF_INET6
ou
STREAM_PF_UNIX
type
O tipo de comunicação a ser usado:
STREAM_SOCK_DGRAM
,
STREAM_SOCK_RAW
,
STREAM_SOCK_RDM
,
STREAM_SOCK_SEQPACKET
ou
STREAM_SOCK_STREAM
protocol
O protocolo a ser usado: STREAM_IPPROTO_ICMP
,
STREAM_IPPROTO_IP
,
STREAM_IPPROTO_RAW
,
STREAM_IPPROTO_TCP
ou
STREAM_IPPROTO_UDP
Nota: Favor consultar a lista de constantes de Fluxo para mais detalhes sobre cada constante.
Retorna um array com os dois recursos de socket em caso de sucesso, ou
false
em caso de falha.
Exemplo #1 Um exemplo de stream_socket_pair()
Este exemplo mostra o uso básico de stream_socket_pair() na Comunicação entre Processos.
<?php
$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
$pid = pcntl_fork();
if ($pid == -1) {
die('não foi possível duplicar');
} else if ($pid) {
/* pai */
fclose($sockets[0]);
fwrite($sockets[1], "filho PID: $pid\n");
echo fgets($sockets[1]);
fclose($sockets[1]);
} else {
/* filho */
fclose($sockets[1]);
fwrite($sockets[0], "mensagem do filho\n");
echo fgets($sockets[0]);
fclose($sockets[0]);
}
?>
O exemplo acima produzirá algo semelhante a:
filho PID: 1378 mensagem do filho