本文实例讲述了PHP消息队列用法。分享给大家供大家参考,具体如下:
该消息队列用于linux下,进程通信
PHP;">
#根据路径和后缀创建一个id
$key = ftok(__DIR__,'R');
#获取队列中的消息
$q = msg_get_queue($key);
#删除队列
msg_remove_queue($q);
#获取队列的状态信息
$status = msg_stat_queue($q);
print_r($status);
echo "\n";
for($i=0;$i<100;$i++)
{
/**
* 向队列里添加消息
* resource $queue,int $msgtype,mixed $message [,bool $serialize = true [,bool $blocking = true [,int &$errorcode ]]]
* $msgtype :消息的类型
* $message : 具体的数据
* $serialize:是否要序列化
* $blocking: 是否阻塞 , 当队列中满时,会进行阻塞,设为非阻塞会产生一个 MSG_EAGAIN 的 错误消息
*/
$flag = msg_send($q,111,array('a'=>1),true,false,$errorcode);
var_dump($errorcode);
}
/**
接收消息
resource $queue,int $desiredmsgtype,int &$msgtype,int $maxsize,mixed &$message [,bool $unserialize = true [,int $flags = 0 [,int &$errorcode ]]]
$desiredmsgtype:0表示从队列最前面开始返回数据,bigger 0:具体的某个队列
$maxsize:数据最大值,获取的消息如果》此值则出错
$msgtype:消息的具体类型,因为$desiredmsgtype可以不指定类型,即指定为0
$flags:MSG_IPC_NOWAIT 如果队列为空直接返回(不阻塞),MSG_EXCEPT MSG_NOERROR 参见手册
*/
$data = msg_receive($q,$type,200,$msg);
var_dump($data);
echo "\n";
var_dump($type);
echo "\n";
var_dump($msg);
echo "\n";
队列状态信息:具体参考手册
1015
[msg_perm.gid] => 100
[msg_perm.mode] => 438
[msg_stime] => 0
[msg_rtime] => 0
[msg_ctime] => 1411830331
[msg_qnum] => 0
[msg_qbytes] => 65536
[msg_lspid] => 0
[msg_lrpid] => 0
)
删除
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。