2024 日本 PHP 研討會

stream_socket_pair

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

stream_socket_pair 建立一對已連線且不可區分的通訊端串流

說明

stream_socket_pair(int $domain, int $type, int $protocol): array|false

stream_socket_pair() 會建立一對已連線且無區別的 socket 串流。此函式常用於 IPC(行程間通訊)。

參數

domain

要使用的協定家族:STREAM_PF_INETSTREAM_PF_INET6STREAM_PF_UNIX

type

要使用的通訊類型:STREAM_SOCK_DGRAMSTREAM_SOCK_RAWSTREAM_SOCK_RDMSTREAM_SOCK_SEQPACKETSTREAM_SOCK_STREAM

protocol

要使用的協定:STREAM_IPPROTO_ICMPSTREAM_IPPROTO_IPSTREAM_IPPROTO_RAWSTREAM_IPPROTO_TCPSTREAM_IPPROTO_UDP

注意關於每個常數的更多詳細資訊,請參閱串流常數列表

返回值

成功時返回包含兩個 socket 資源的 陣列,失敗時返回 false

範例

範例 #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

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top