I think it is kinda lame why I cannot find out (easily) explicitly which types of messages are allowed and which ones are not. Maybe we can start our own little list. I know that strings work, and arrays do not.
msg_send
(PHP 4 >= 4.3.0, PHP 5)
msg_send — メッセージキューにメッセージを送信する
説明
msg_send() は、queue で指定したメッセージキューに対して msgtype で指定した型 (0 より大きい数値である必要があります) のメッセージ message を送信します。
パラメータ
- queue
-
- msgtype
-
- message
-
- serialize
-
オプションのパラメータ serialize は、 message を送信する方法を制御します。 serialize のデフォルト値は TRUE で、 この場合 message が送信される前に セッションモジュールと同じ方法でシリアライズされます。 これにより、配列やオブジェクトのような複雑な形式のデータを 他の PHP スクリプトに送信することが可能となります。 また、もし WDDX シリアライザを使用しているなら、あらゆる WDDX 互換クライアントに対して同じことが可能となります。
- blocking
-
メッセージがキューに収まらないほど大きい場合は、他のプロセスが 現在キューにあるメッセージを読み込んでキューの空き容量が確保されるまで スクリプトの実行を待ち続けます。これをブロックモードといいます。 オプションのパラメータ blocking を FALSE に設定することでブロックモードではなくすることが可能で、 この場合、もしキューの空き容量よりも大きなメッセージを送信すると msg_send() はすぐに FALSE を返します。 また、オプションのパラメータ errorcode を MSG_EAGAIN に設定すると、 少し時間をおいてメッセージを再度送信しなければならないことが戻り値からわかります。
- errorcode
-
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
処理が正常に完了すると、メッセージキューデータ構造体は以下のように更新されます。 msg_lspid には呼び出し元のプロセス ID が 設定され、msg_qnum が 1 増加し、 msg_stime が現在の時刻に設定されます。
msg_send
14-May-2008 03:39
10-Apr-2003 03:51
Sample sending webpage, see msg_receive for matching service
<?php
$MSGKEY = 519051;
$msg_id = msg_get_queue ($MSGKEY, 0600);
if (!msg_send ($msg_id, 1, 'Hi', true, true, $msg_err))
echo "Msg not sent because $msg_err\n";
?>
