Reference | SOCKET-MANAGER Framework For PHP

SocketManager
in package

ソケットマネージャークラス

ソケットリソースの管理と周期ドリブンの制御を行う

周期ドリブンマネージャーを「プロトコル」部と「コマンド」部に分類して管理する

Table of Contents

Constants

E_CLASS_NAME_FOR_UNIT  = 'SocketManager\Library\UnitException'
EXCEPTIONクラス名(UNIT処理用)
SOCKET_ERROR_COULDNT_COMPLETED  = 10035
ソケット操作を完了できなかった
SOCKET_ERROR_PEER_SHUTDOWN  = [10053, 10054, 104]
相手先による切断
UDP_CONNECTION_IDENTIFY  = ''
UDP接続識別データ

Properties

$await_connection_id  : string|null
待ち受け用ソケットの接続ID
$await_host  : string
待ち受け用ホスト
$await_port  : int
待ち受け用ポート
$changed_descriptors  : mixed
前回のSELECT状態が格納される
$command_dispatcher  : mixed
コマンドディスパッチャー
$cycle_driven_for_command  : CycleDrivenManager
周期ドリブンマネージャー(コマンドUNIT用)
$cycle_driven_for_protocol  : CycleDrivenManager
周期ドリブンマネージャー(プロトコルUNIT用)
$descriptors  : array<string|int, mixed>
【ディスクリプタのリスト】
$emergency_callback  : mixed
緊急停止時のコールバック
$lang  : string
言語設定
$limit_connection  : int
制限接続数
$log_writer  : mixed
ログライター
$next_connection_id  : int
NEXT接続ID
$receive_buffer_size  : int
受信サイズ(recvメソッドのデフォルト受信サイズ)
$serializer  : mixed
シリアライザー
$sockets  : array<string|int, mixed>
ソケットリソースのリスト
$unit_parameter  : SocketManagerParameter|null
SocketManager用として扱うUNITパラメータ
$unserializer  : mixed
アンシリアライザー

Methods

__construct()  : mixed
コンストラクタ
aliveCheck()  : bool
アライブチェックを行う
bind()  : bool
ソケットバインド(UDP用)
close()  : bool
ソケット切断シーケンスの開始
connect()  : bool
ソケット接続
cycleDriven()  : bool
周期ドリブン処理の実行
getAwaitConnectionId()  : string|null
待ち受けポートの接続IDを取得
getAwaitHost()  : string|null
待ち受けホスト名を取得
getAwaitPort()  : int|null
待ち受けポート番号を取得
getClientCount()  : int
現在のクライアント数を取得
getConnectionIdAll()  : array<string|int, mixed>
全接続IDを取得
getProperties()  : array<string|int, mixed>
プロパティの取得(ディスクリプタ内)
getQueueName()  : string|null
キュー名の取得
getStatusName()  : string|null
ステータス名の取得
getUnserializer()  : mixed
アンシリアライザーの取得
getUserProperties()  : mixed
ユーザープロパティの取得(ディスクリプタ内)
isExecutedQueue()  : bool
キューの実行状況を検査
isExistDescriptor()  : bool
ソケットディスクリプタの存在を検査
isReceiving()  : bool
(receivingメソッドによる)データ受信中の検査
isSending()  : bool
(sendingメソッドによる)データ送信中の検査
listen()  : bool
ソケットリッスン(TCP用)
logWriter()  : mixed
ログ出力
receiving()  : mixed
データ受信
recv()  : int
データ受信
sending()  : bool|null
データ送信
setCommandUnits()  : mixed
IEntryUnitsによるUNIT登録(コマンド用)
setInitSocketManager()  : mixed
IInitSocketManagerによる初期化
setProperties()  : bool
プロパティの設定(ディスクリプタ内)
setProtocolUnits()  : mixed
IEntryUnitsによるUNIT登録(プロトコル用)
setReceivingSize()  : bool
データ受信サイズの設定
setRecvStack()  : bool
受信データスタックへ設定
setSendingData()  : bool
送信データの設定
setSendStack()  : bool
送信データスタックへ設定
setSendStackAll()  : bool
全接続の送信データスタックへ設定
setStatusName()  : mixed
ステータス名の設定
setUserProperties()  : bool
ユーザープロパティの設定(ディスクリプタ内)
shutdown()  : bool
ソケットクローズ
shutdownAll()  : bool
ソケット全クローズ
throwBreak()  : mixed
プロトコルUNIT処理を中断する
createDescriptor()  : array<string|int, mixed>|bool
ソケットディスクリプタの生成
executeUnit()  : bool
UNITの実行
getRecvStack()  : mixed
受信データスタックから取得
getSendStack()  : mixed
送信データスタックから取得
getSerializer()  : mixed
シリアライザーの取得
isExecutingSequence()  : bool
UNIT実行中の検査
select()  : bool
ソケットセレクト
setQueueNameForStart()  : bool
キュー名の設定(処理開始用)

Constants

E_CLASS_NAME_FOR_UNIT

EXCEPTIONクラス名(UNIT処理用)

private mixed E_CLASS_NAME_FOR_UNIT = 'SocketManager\Library\UnitException'

SOCKET_ERROR_COULDNT_COMPLETED

ソケット操作を完了できなかった

private mixed SOCKET_ERROR_COULDNT_COMPLETED = 10035

SOCKET_ERROR_PEER_SHUTDOWN

相手先による切断

private mixed SOCKET_ERROR_PEER_SHUTDOWN = [10053, 10054, 104]

UDP_CONNECTION_IDENTIFY

UDP接続識別データ

private mixed UDP_CONNECTION_IDENTIFY = ''

Properties

$await_connection_id

待ち受け用ソケットの接続ID

private string|null $await_connection_id = null

$await_host

待ち受け用ホスト

private string $await_host = '127.0.0.1'

$await_port

待ち受け用ポート

private int $await_port = 10000

$changed_descriptors

前回のSELECT状態が格納される

private mixed $changed_descriptors = []

$command_dispatcher

コマンドディスパッチャー

private mixed $command_dispatcher = null

受信バッファスタックにデータがある場合実行される

$descriptors

【ディスクリプタのリスト】

private array<string|int, mixed> $descriptors = []

内訳は以下の通り

接続ID(<'#' + 番号>形式)

'connection_id' => 接続ID(string),


送信バッファスタック

基本的にはコマンドUNITでスタックされプロトコルUNITでスタックされたデータを送信する

'send_buffers' => 送信データ配列(array),


受信バッファスタック

基本的にはプロトコルUNITでスタックされコマンドUNITで抽出される

'recv_buffers' => 受信データ配列(array),


受信バッファ

基本的にはプロトコルUNITで受信中のデータを扱う

'receiving_buffer' => [

'size' => 受信サイズ(int),

'data' => 受信データ(string),

'receiving_size' => 受信中のサイズ(int)

]


送信バッファ

基本的にはプロトコルUNITで送信中のデータを扱う

'sending_buffer' => [

'data' => 送信データ(string),

]


ピックアップ受信バッファ

コマンドディスパッチャー用にピックアップしてからコマンドUNITで使用する

'receive_buffer' => 受信データ(ペイロード部)


ピックアップ送信バッファ

プロトコルUNITの送信処理前にピックアップされるデータ

'send_buffer' => 送信データ(ペイロード部)


プロトコルUNITで利用される名称

'protocol_names' => [

'queue_name' => キュー名(string),

	'status_name' => ステータス名(string)

],


コマンドUNITで利用される名称

'command_names' => [

'queue_name' => キュー名(string),

	'status_name' => ステータス名(string)

],


最終アクセス日時

'last_access_timestamp' => タイムスタンプ(int),


強制ディスパッチフラグ

'forced_dispatcher' => true(ディスパッチ実施) or false(実施しない),


ユーザープロパティ(自由定義)

'user_property' => プロパティ配列(array),

$emergency_callback

緊急停止時のコールバック

private mixed $emergency_callback = null

例外等の緊急切断時に実行される

$lang

言語設定

private string $lang = 'ja'

デフォルト:'ja'

$limit_connection

制限接続数

private int $limit_connection = 10

$log_writer

ログライター

private mixed $log_writer = null

$next_connection_id

NEXT接続ID

private int $next_connection_id = 0

$receive_buffer_size

受信サイズ(recvメソッドのデフォルト受信サイズ)

private int $receive_buffer_size = 1024

$serializer

シリアライザー

private mixed $serializer = null

ペイロード部のシリアライズ処理

$sockets

ソケットリソースのリスト

private array<string|int, mixed> $sockets = []

$unserializer

アンシリアライザー

private mixed $unserializer = null

ペイロード部のアンシリアライズ処理

Methods

__construct()

コンストラクタ

public __construct([string $p_host = null ][, int $p_port = null ][, int $p_size = null ][, int $p_limit = null ]) : mixed
Parameters
$p_host : string = null

待ち受け用ホスト名

$p_port : int = null

待ち受け用ポート番号

$p_size : int = null

受信サイズ(recvメソッドのデフォルト受信サイズ)

$p_limit : int = null

接続制限数

aliveCheck()

アライブチェックを行う

public aliveCheck(string $p_kind, string $p_cid, int $p_tout) : bool

任意のタイミングで一時的に実行したい時に利用する

※既に設定済みの場合は何もせずに終了する

Parameters
$p_kind : string

UNIT種別("protocol_names" or "command_names")

$p_cid : string

接続ID

$p_tout : int

アライブチェックタイムアウト(秒)

Return values
bool

true(成功) or false(失敗)

bind()

ソケットバインド(UDP用)

public bind([string $p_host = null ][, int $p_port = null ]) : bool

引数のホスト名とポート番号の指定があれば、コンストラクタで設定された内容より優先されます

Parameters
$p_host : string = null

ホスト名

$p_port : int = null

ポート番号

Return values
bool

true(成功) or false(失敗)

close()

ソケット切断シーケンスの開始

public close(string $p_cid[, mixed $p_param = null ][, bool $p_convert = true ]) : bool

プロトコルUNIT実行中に呼ばれた場合は例外を投げて現在の処理を中断する

Parameters
$p_cid : string

接続ID

$p_param : mixed = null

切断パラメータ

$p_convert : bool = true

― 変換(シリアライズ/アンシリアライズの行使)フラグ

― フラグ指定に関わらずシリアライザーが登録されていなければ変換はされない

Return values
bool

true(成功) or false(失敗)

connect()

ソケット接続

public connect(string $p_host, int $p_port[, bool $p_udp = false ][, int $p_retry = 0 ][, int $p_interval = 1000 ]) : bool
Parameters
$p_host : string

ホスト名

$p_port : int

ポート番号

$p_udp : bool = false

UDPフラグ true(UDP) or false(TCP)

$p_retry : int = 0

リトライ回数(0:無限)

$p_interval : int = 1000

リトライ間隔(μs)

Return values
bool

true(成功) or false(失敗)

cycleDriven()

周期ドリブン処理の実行

public cycleDriven([int $p_cycle_interval = 2000 ][, int $p_alive_interval = 0 ]) : bool
Parameters
$p_cycle_interval : int = 2000

周期インターバルタイム(マイクロ秒)

$p_alive_interval : int = 0

アライブチェックインターバルタイム(秒)

Return values
bool

true(成功) or false(失敗)

getAwaitConnectionId()

待ち受けポートの接続IDを取得

public getAwaitConnectionId() : string|null
Return values
string|null

待ち受けポートの接続ID

getAwaitHost()

待ち受けホスト名を取得

public getAwaitHost() : string|null
Return values
string|null

待ち受けホスト名

getAwaitPort()

待ち受けポート番号を取得

public getAwaitPort() : int|null
Return values
int|null

待ち受けポート番号

getClientCount()

現在のクライアント数を取得

public getClientCount() : int
Return values
int

クライアント数

getConnectionIdAll()

全接続IDを取得

public getConnectionIdAll([string $p_cid = null ]) : array<string|int, mixed>
Parameters
$p_cid : string = null

除外する接続ID

Return values
array<string|int, mixed>

接続IDのリスト

getProperties()

プロパティの取得(ディスクリプタ内)

public getProperties(string $p_cid, array<string|int, mixed> $p_prop) : array<string|int, mixed>
Parameters
$p_cid : string

接続ID

$p_prop : array<string|int, mixed>

プロパティ名のリスト

Return values
array<string|int, mixed>

プロパティのリスト or null(空) or false(失敗)

getQueueName()

キュー名の取得

public getQueueName(string $p_kind, string $p_cid) : string|null
Parameters
$p_kind : string

取得対象種別('protocol_names' or 'command_names')

$p_cid : string

接続ID

Return values
string|null

キュー名 or null(なし)

getStatusName()

ステータス名の取得

public getStatusName(string $p_kind, string $p_cid) : string|null
Parameters
$p_kind : string

取得対象種別('protocol_names' or 'command_names')

$p_cid : string

接続ID

Return values
string|null

キュー名 or null(なし)

getUnserializer()

アンシリアライザーの取得

public getUnserializer() : mixed

受信データ(ペイロード部)のアンシリアライズ処理

Return values
mixed

関数(あるいは関数名) or null(空)

getUserProperties()

ユーザープロパティの取得(ディスクリプタ内)

public getUserProperties(string $p_cid, array<string|int, mixed> $p_prop) : mixed
Parameters
$p_cid : string

接続ID

$p_prop : array<string|int, mixed>

ユーザープロパティのリスト

Return values
mixed

ユーザープロパティデータ or null(空) or false(失敗)

isExecutedQueue()

キューの実行状況を検査

public isExecutedQueue(string $p_cid, string $p_kind, string $p_que_nm) : bool
Parameters
$p_cid : string

接続ID

$p_kind : string

UNIT種別("protocol_names" or "command_names")

$p_que_nm : string

キュー名

Return values
bool

true(実行中) or false(停止中)

isExistDescriptor()

ソケットディスクリプタの存在を検査

public isExistDescriptor(string $p_cid) : bool
Parameters
$p_cid : string

接続ID

Return values
bool

true(存在する) or false(存在しない)

isReceiving()

(receivingメソッドによる)データ受信中の検査

public isReceiving(string $p_cid) : bool
Parameters
$p_cid : string

接続ID

Return values
bool

true(受信中) or false(受信中ではない)

isSending()

(sendingメソッドによる)データ送信中の検査

public isSending(string $p_cid) : bool
Parameters
$p_cid : string

接続ID

Return values
bool

true(送信中) or false(送信中ではない)

listen()

ソケットリッスン(TCP用)

public listen([string $p_host = null ][, int $p_port = null ]) : bool

引数のホスト名とポート番号の指定があれば、コンストラクタで設定された内容より優先されます

Parameters
$p_host : string = null

ホスト名

$p_port : int = null

ポート番号

Return values
bool

true(成功) or false(失敗)

logWriter()

ログ出力

public logWriter(string $p_level, array<string|int, mixed> $p_param) : mixed

SocketManagerで使用しているチャンネル名と同じになる

Parameters
$p_level : string

ログレベル

$p_param : array<string|int, mixed>

ログパラメータ

receiving()

データ受信

public receiving(string $p_cid) : mixed

setReceivingSizeで設定されたサイズ分を受信するまで続ける

※プロトコルUNITで使用

Parameters
$p_cid : string

接続ID

Return values
mixed

受信データ or null(受信中) or false(失敗)

recv()

データ受信

public recv(string $p_cid, mixed &$p_recv[, int $p_size = null ]) : int

受信バッファサイズ分を受信する

※プロトコルUNITで使用

Parameters
$p_cid : string

接続ID

$p_recv : mixed

受信エリア

$p_size : int = null

受信サイズ(指定があればデフォルトサイズより優先される)

Return values
int

受信したサイズ or false(失敗) or null(取得できるデータがない)

sending()

データ送信

public sending(string $p_cid) : bool|null

setSendingDataで設定されたデータを送信するまで続ける

※プロトコルUNITで使用

Parameters
$p_cid : string

接続ID

Return values
bool|null

true(成功) or false(失敗) or null(送信中)

setCommandUnits()

IEntryUnitsによるUNIT登録(コマンド用)

public setCommandUnits(IEntryUnits $p_entry) : mixed
Parameters
$p_entry : IEntryUnits

IEntryUnitsのインスタンス

setProperties()

プロパティの設定(ディスクリプタ内)

public setProperties(string $p_cid, array<string|int, mixed> $p_prop) : bool
Parameters
$p_cid : string

接続ID

$p_prop : array<string|int, mixed>

プロパティのリスト

Return values
bool

true(成功) or false(失敗)

setProtocolUnits()

IEntryUnitsによるUNIT登録(プロトコル用)

public setProtocolUnits(IEntryUnits $p_entry) : mixed
Parameters
$p_entry : IEntryUnits

IEntryUnitsのインスタンス

setReceivingSize()

データ受信サイズの設定

public setReceivingSize(string $p_cid, int $p_size) : bool

※プロトコルUNITで使用

Parameters
$p_cid : string

接続ID

$p_size : int

受信サイズ

Return values
bool

true(成功) or false(失敗)

setRecvStack()

受信データスタックへ設定

public setRecvStack(string $p_cid[, mixed $p_data = null ][, bool $p_convert = false ]) : bool

※基本的に送受信スタック内のペイロードデータはシリアライズ化されている事を前提とする

Parameters
$p_cid : string

接続ID

$p_data : mixed = null

設定するデータ

$p_convert : bool = false

― 変換(シリアライズ/アンシリアライズの行使)フラグ

― フラグ指定に関わらずシリアライザーが登録されていなければ変換はされない

Return values
bool

true(成功) or false(失敗)

setSendingData()

送信データの設定

public setSendingData(string $p_cid, string $p_data) : bool

※プロトコルUNITで使用

Parameters
$p_cid : string

接続ID

$p_data : string

送信データ

Return values
bool

true(成功) or false(失敗)

setSendStack()

送信データスタックへ設定

public setSendStack(string $p_cid, mixed $p_data) : bool

※基本的に送受信スタック内のペイロードデータはシリアライズ化されている事を前提とする

Parameters
$p_cid : string

接続ID

$p_data : mixed

送信データ

Return values
bool

true(成功) or false(失敗)

setSendStackAll()

全接続の送信データスタックへ設定

public setSendStackAll(string $p_cid, mixed $p_data[, bool $p_self_remove = false ]) : bool

※基本的に送受信スタック内のペイロードデータはシリアライズ化されている事を前提とする

Parameters
$p_cid : string

接続ID

$p_data : mixed

送信データ

$p_self_remove : bool = false

自身の接続の除外フラグ

Return values
bool

true(成功) or false(失敗)

setStatusName()

ステータス名の設定

public setStatusName(string $p_kind, string $p_cid, string|null $p_name) : mixed
Parameters
$p_kind : string

設定対象種別('protocol_names' or 'command_names')

$p_cid : string

接続ID

$p_name : string|null

キュー名 or null(なし)

setUserProperties()

ユーザープロパティの設定(ディスクリプタ内)

public setUserProperties(string $p_cid, array<string|int, mixed> $p_prop) : bool
Parameters
$p_cid : string

接続ID

$p_prop : array<string|int, mixed>

ユーザープロパティのリスト

Return values
bool

true(成功) or false(失敗)

shutdown()

ソケットクローズ

public shutdown(string $p_cid) : bool
Parameters
$p_cid : string

接続ID

Return values
bool

true(成功) or false(失敗)

shutdownAll()

ソケット全クローズ

public shutdownAll() : bool
Return values
bool

true(成功) or false(失敗)

throwBreak()

プロトコルUNIT処理を中断する

public throwBreak() : mixed

実行されると例外キャッチ時に切断処理は無視されて処理を継続する

createDescriptor()

ソケットディスクリプタの生成

private createDescriptor(Socket $p_socket[, bool $p_udp = false ]) : array<string|int, mixed>|bool
Parameters
$p_socket : Socket

ソケットリソース

$p_udp : bool = false

UDPフラグ

Return values
array<string|int, mixed>|bool

ディスクリプタ or false(失敗)

executeUnit()

UNITの実行

private executeUnit(string $p_cid, string $p_kind) : bool
Parameters
$p_cid : string

接続ID

$p_kind : string

UNIT種別("protocol_names" or "command_names")

Return values
bool

true(成功) or false(切断)

getRecvStack()

受信データスタックから取得

private getRecvStack(string $p_cid[, bool $p_convert = true ]) : mixed

※基本的に送受信スタック内のペイロードデータはシリアライズ化されている事を前提とする

Parameters
$p_cid : string

接続ID

$p_convert : bool = true

― 変換(シリアライズ/アンシリアライズの行使)フラグ

― フラグ指定に関わらずシリアライザーが登録されていなければ変換はされない

Return values
mixed

受信した最新のペイロードデータ or null(空) or false(失敗)

getSendStack()

送信データスタックから取得

private getSendStack(string $p_cid[, bool $p_convert = false ]) : mixed

※基本的に送受信スタック内のペイロードデータはシリアライズ化されている事を前提とする

Parameters
$p_cid : string

接続ID

$p_convert : bool = false

― 変換(シリアライズ/アンシリアライズの行使)フラグ

― フラグ指定に関わらずシリアライザーが登録されていなければ変換はされない

Return values
mixed

送信データスタックエントリ or null(空) or false(失敗)

getSerializer()

シリアライザーの取得

private getSerializer() : mixed

送信データ(ペイロード部)のシリアライズ処理

Return values
mixed

関数(あるいは関数名) or null(空)

isExecutingSequence()

UNIT実行中の検査

private isExecutingSequence(string $p_kind, string $p_cid) : bool
Parameters
$p_kind : string

調査対象種別('protocol_names' or 'command_names')

$p_cid : string

接続ID

Return values
bool

true(実行中) or false(未実行)

select()

ソケットセレクト

private select([int $p_utimer = 0 ]) : bool
Parameters
$p_utimer : int = 0

ブロッキングタイム(マイクロ秒)

Return values
bool

true(成功) or false(失敗)

setQueueNameForStart()

キュー名の設定(処理開始用)

private setQueueNameForStart(string $p_kind, string $p_cid, string|null $p_name) : bool
Parameters
$p_kind : string

設定対象種別('protocol_names' or 'command_names')

$p_cid : string

接続ID

$p_name : string|null

キュー名 or null(なし)

Return values
bool

true(成功) or false (失敗)


        
On this page

Search results