0

PHP では、IPC を介してメッセージを送信し、メッセージがキューにあるかどうかをすぐに確認しようとします。テストコードは次のとおりです。

$rQueue = msg_get_queue(12345, 0660);
msg_send($rQueue, 0, "test", FALSE, FALSE);
print_r(msg_stat_queue($rQueue));

これは、指定されたキューから統計を出力しmsg_qnum=0ます。つまり、メッセージがキューにないことを示します。予想される動作は、代わりに少なくとも 1 つのメッセージがキューに表示されることです。問題はどこだ?

4

1 に答える 1

1

マニュアルを見ると、次のように書かれています。

bool msg_send ( resource $queue , int $msgtype , mixed $message [, bool $serialize = true [, bool $blocking = true [, int &$errorcode ]]] )

msg_send() は、タイプ msgtype (0 より大きい必要があります) のメッセージを queue で指定されたメッセージキューに送信します。

したがって、2 番目のパラメーターを 0 から 1 に変更すると、問題が解決します。

error_reporting()関数もご覧ください。あなたのコードを実行すると、PHP は警告で問題を示しました。

PHP 警告: msg_send(): msgsnd が失敗しました: 引数が無効です

于 2013-10-03T10:59:34.967 に答える