<?php $MSGKEY = 519052; $msg_id = msg_get_queue ($MSGKEY, 0600); if (!msg_send ($msg_id, 1, 'AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH', false, true, $msg_err)) echo "Msg not sent because $msg_err\n"; if (msg_receive ($msg_id, 1, $msg_type, 10240, $msg, false, 0, $msg_error)) { echo "$msg\n"; } else { echo "Received $msg_error fetching message\n"; break; } msg_remove_queue ($msg_id); ?>
注:wamp环境下缺少三个dll文件,运行时提示方法未定义,可装个linux虚拟机来测试。
请求要及时处理,否则请求太多影响Apache的运行。
请求处理代码如下:
<?php //负责创建消息队列的key $message_queue_key = ftok(MsgQueue::MSGPATH."$MSGKEY", 'a'); //通过key来创建消息队列 $message_queue = msg_get_queue($message_queue_key, 0666); //获得队列状态信息,包括队列中还有多少消息未读等信息 $message_queue_status = msg_stat_queue($message_queue); //echo $message_queue_status["msg_qnum"];die; for($j=0;$j<$message_queue_status["msg_qnum"];$j++){ msg_receive($message_queue,1, $message_type, 10240, $message, false, MSG_IPC_NOWAIT,$error); msg_remove_queue ($message_queue); } ?>