(PHP 5 >= 5.1.0, PHP 7, PHP 8)
stream_socket_pair — 建立一對已連線且不可區分的通訊端串流
stream_socket_pair() 會建立一對已連線且無區別的 socket 串流。此函式常用於 IPC(行程間通訊)。
domain
要使用的協定家族:STREAM_PF_INET
、STREAM_PF_INET6
或 STREAM_PF_UNIX
type
要使用的通訊類型:STREAM_SOCK_DGRAM
、STREAM_SOCK_RAW
、STREAM_SOCK_RDM
、STREAM_SOCK_SEQPACKET
或 STREAM_SOCK_STREAM
protocol
要使用的協定:STREAM_IPPROTO_ICMP
、STREAM_IPPROTO_IP
、STREAM_IPPROTO_RAW
、STREAM_IPPROTO_TCP
或 STREAM_IPPROTO_UDP
注意:關於每個常數的更多詳細資訊,請參閱串流常數列表。
範例 #1 stream_socket_pair() 範例
此範例顯示了 stream_socket_pair() 在行程間通訊中的基本用法。
<?php
$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
$pid = pcntl_fork();
if ($pid == -1) {
die('無法建立子行程');
} else if ($pid) {
/* 父行程 */
fclose($sockets[0]);
fwrite($sockets[1], "子行程 PID: $pid\n");
echo fgets($sockets[1]);
fclose($sockets[1]);
} else {
/* 子行程 */
fclose($sockets[1]);
fwrite($sockets[0], "來自子行程的訊息\n");
echo fgets($sockets[0]);
fclose($sockets[0]);
}
?>
上述範例將輸出類似以下的內容
child PID: 1378 message from child