stream_socket_pair()
stream_socket_pair() — Creates a pair of connected, indistinguishable socket streams.
Built-in function of PHP 8.5. The manual lists it as available in PHP 5 >= 5.1.0, PHP 7, PHP 8. This page is the reference card: signature, parameters and return value, plus the changelog and the example the manual provides.
What it does
stream_socket_pair() creates a pair of connected, indistinguishable socket streams. This function is commonly used in IPC (Inter-Process Communication).
Signature
stream_socket_pair(int $domain, int $type, int $protocol): array|false
Parameters
| Parameter | Type | What it takes |
|---|---|---|
| $domain | int | The protocol family to be used: STREAM_PF_INET, STREAM_PF_INET6 or STREAM_PF_UNIX |
| $type | int | The type of communication to be used: STREAM_SOCK_DGRAM, STREAM_SOCK_RAW, STREAM_SOCK_RDM, STREAM_SOCK_SEQPACKET or STREAM_SOCK_STREAM |
| $protocol | int | The protocol to be used: STREAM_IPPROTO_ICMP, STREAM_IPPROTO_IP, STREAM_IPPROTO_RAW, STREAM_IPPROTO_TCP or STREAM_IPPROTO_UDP |
Return value
Returns an array with the two socket resources on success, or false on failure.
Example
A runnable snippet:
$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP); $pid = pcntl_fork(); if ($pid == -1) { die('could not fork'); } else if ($pid) { /* parent */ fclose($sockets[0]); fwrite($sockets[1], "child PID: $pid\n"); echo fgets($sockets[1]); fclose($sockets[1]); } else { /* child */ fclose($sockets[1]); fwrite($sockets[0], "message from child\n"); echo fgets($sockets[0]); fclose($sockets[0]); }
Output:
child PID: 1378 message from child
All PHP 8.5 built-in functions
Reference card built from the PHP manual page stream_socket_pair() (PHP documentation, CC BY 3.0). The page is generated from the manual, so the wording of the parameter and return value text follows php.net.