stream_socket_pair: 接続された、区別できないソケットストリームの組を作成する (ストリーム 関数) - PHPプロ!マニュアル

PHPマニュアル

stream_socket_pair: 接続された、区別できないソケットストリームの組を作成する

stream_socket_pair

(PHP 5 >= 5.1.0)

stream_socket_pair接続された、区別できないソケットストリームの組を作成する

説明

array stream_socket_pair ( int $domain , int $type , int $protocol )

stream_socket_pair() は、互いに接続されており区別できない ソケットストリームの組を作成します。この関数は、一般に IPC (Inter-Process Communication: プロセス間通信)で使用します。

パラメータ

domain

使用するプロトコルファミリー。STREAM_PF_INETSTREAM_PF_INET6 あるいは STREAM_PF_UNIX

type

使用する接続の型。 STREAM_SOCK_DGRAMSTREAM_SOCK_RAWSTREAM_SOCK_RDMSTREAM_SOCK_SEQPACKET あるいは STREAM_SOCK_STREAM

protocol

使用するプロトコル。STREAM_IPPROTO_ICMPSTREAM_IPPROTO_IPSTREAM_IPPROTO_RAWSTREAM_IPPROTO_TCP あるいは STREAM_IPPROTO_UDP

注意: 各定数についての詳細な情報は ストリーム定数の一覧 を参照ください。

返り値

成功した場合に 2 つのソケットリソースの配列、失敗した場合に FALSE を返します。

変更履歴

バージョン 説明
5.3.0 この関数は、Windows プラットフォームでも使用可能となりました。

例1 stream_socket_pair() の例

この例では、プロセス間通信に stream_socket_pair() を使用する基本的な方法を示します。

<?php

$sockets 
stream_socket_pair(STREAM_PF_UNIXSTREAM_SOCK_STREAMSTREAM_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]);
}

?>

上の例の出力は、 たとえば以下のようになります。

子プロセスの PID: 1378
子プロセスからのメッセージ


PHPマニュアル



Pick Up Q&A

Q
セッションがいいのか、それともデータベースがいいのか教えて下さい。
 このエントリーをはてなブックマークに追加 
A
>ボタンをクリックしたら選んだ商品情報を持っておきたいと思っています。 そのくらいのことならセッションもしくはCookie(期限短め:場合によってはブラウザ閉じるまで)でいいんじゃないですかね。 #わ...

>>続きを読む

一つの目安として、ECサイトの購入情報など絶対に消えてはいけないものはDBに、カートなどの一時的に使用する情報や、ユーザに任意のタイミングで消去されても構わないものはセッションにと使い分けるといいでしょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)