msg_send
メッセージキューにメッセージを送信する
説明
bool msg_send(
SysvMessageQueue $queue
,
int $message_type
,
stringintfloatbool $message
,
bool $serialize
= true
,
bool $blocking
= true
,
int &$error_code
= null
)
パラメータ
-
queue
-
メッセージキュー
-
message_type
-
メッセージのタイプ (0より大きい数値でなければいけません)
-
message
-
メッセージの本体
注意:
serialize
が false
に設定された場合、
この値は string, int, float
または bool のいずれかでなければなりません。
それら以外の場合、警告が発生します。
-
serialize
-
オプションのパラメータ serialize
は、
message
を送信する方法を制御します。
serialize
のデフォルト値は true
で、
この場合 message
が送信される前に
セッションモジュールと同じ方法でシリアライズされます。
これにより、配列やオブジェクトのような複雑な形式のデータを
他の PHP スクリプトに送信することが可能となります。
また、もし WDDX シリアライザを使用しているなら、あらゆる WDDX
互換クライアントに対して同じことが可能となります。
-
blocking
-
メッセージがキューに収まらないほど大きい場合は、他のプロセスが
現在キューにあるメッセージを読み込んでキューの空き容量が確保されるまで
スクリプトの実行を待ち続けます。これをブロックモードといいます。
オプションのパラメータ blocking
を false
に設定することでブロックモードではなくすることが可能で、
この場合、もしキューの空き容量よりも大きなメッセージを送信すると
msg_send はすぐに false
を返します。
また、オプションのパラメータ error_code
を MSG_EAGAIN
に設定すると、
少し時間をおいてメッセージを再度送信しなければならないことが戻り値からわかります。
-
error_code
-
この関数の実行が失敗した場合、オプションのエラーコードがシステムの errno 変数の値に設定されます。
戻り値
成功した場合に true
を、失敗した場合に false
を返します。
処理が正常に完了すると、メッセージキューデータ構造体は以下のように更新されます。
msg_lspid
には呼び出し元のプロセス ID が
設定され、msg_qnum
が 1 増加し、
msg_stime
が現在の時刻に設定されます。
参考
- msg_remove_queue
- msg_receive
- msg_stat_queue
- msg_set_queue