为什么PHP ipc消息不在队列中?

时间:2013-10-03 09:55:32

标签: php ipc

在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 个答案:

答案 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失败:参数无效