PHP的msg_get_queue返回false的问题

3 篇文章 0 订阅

在用消息队列做进程间通信时遇到的一个小问题大概是这样的:有多个常驻进程且每个进程需要创建一个消息队列; 在测试过程中发现只有16个进程能成功创建消息队列, 检查发现是系统内核参数限制了(cat /proc/sys/kernel/msgmni 查看当前系统范围内限制最大消息队列数是16)

模拟代码:

for($i = 1; $i <=20; $i++) {
    $id = msg_get_queue($i);
    var_dump($id);
}

执行输出:

resource(15) of type (sysvmsg queue)
resource(16) of type (sysvmsg queue)
resource(17) of type (sysvmsg queue)
resource(18) of type (sysvmsg queue)
resource(19) of type (sysvmsg queue)
resource(20) of type (sysvmsg queue)
resource(21) of type (sysvmsg queue)
resource(22) of type (sysvmsg queue)
resource(23) of type (sysvmsg queue)
resource(24) of type (sysvmsg queue)
resource(25) of type (sysvmsg queue)
resource(26) of type (sysvmsg queue)
resource(27) of type (sysvmsg queue)
resource(28) of type (sysvmsg queue)
resource(29) of type (sysvmsg queue)
resource(30) of type (sysvmsg queue)
bool(false)
bool(false)
bool(false)
bool(false)

在文件/etc/sysctl.conf中添加或修改kernel.msgmni的值来改变这个限制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值