首页 > 编程 > PHP > 正文

PHP的msg_get_queue返回false的问题

2019-11-08 18:38:49
字体:
来源:转载
供稿:网友

在用消息队列做进程间通信时遇到的一个小问题大概是这样的:有多个常驻进程且每个进程需要创建一个消息队列; 在测试过程中发现只有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的值来改变这个限制


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表