stream_socket_pair
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
stream_socket_pair — Cria um par de fluxos de socket conectados e indistinguíveis
Descrição
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).
Parâmetros
domain
-
A família de protocolos a ser usada:
STREAM_PF_INET
,STREAM_PF_INET6
ouSTREAM_PF_UNIX
type
-
O tipo de comunicação a ser usado:
STREAM_SOCK_DGRAM
,STREAM_SOCK_RAW
,STREAM_SOCK_RDM
,STREAM_SOCK_SEQPACKET
ouSTREAM_SOCK_STREAM
protocol
-
O protocolo a ser usado:
STREAM_IPPROTO_ICMP
,STREAM_IPPROTO_IP
,STREAM_IPPROTO_RAW
,STREAM_IPPROTO_TCP
ouSTREAM_IPPROTO_UDP
Note: Favor consultar a lista de constantes de Fluxo para mais detalhes sobre cada constante.
Valor Retornado
Retorna um array com os dois recursos de socket em caso de sucesso, ou
false
em caso de falha.
Exemplos
Example #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