在PHP中,我尝试通过IPC发送消息,并立即检查消息是否在队列中。这是一个测试代码:
$rQueue = msg_get_queue(12345, 0660);
msg_send($rQueue, 0, "test", FALSE, FALSE);
print_r(msg_stat_queue($rQueue));
打印出来自给定队列的统计信息,表示msg_qnum=0
,即队列中没有消息。预期的行为是在队列中至少看到一条消息。问题在哪里?
答案 0 :(得分:1)
查看manual它说:
bool msg_send ( resource $queue , int $msgtype , mixed $message [, bool $serialize = true [, bool $blocking = true [, int &$errorcode ]]] )
msg_send()发送一个msgtype类型的消息(必须大于 0)到队列指定的消息队列。
因此,将第二个参数从0更改为1可以解决问题。
请同时查看error_reporting()功能。当我运行你的代码时,PHP表示问题是警告:
PHP警告:msg_send():msgsnd失败:参数无效