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(int $domain, int $type, int $protocol): array|false

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 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

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