我想知道System-V消息队列的限制是什么,即最大队列大小,每个项目的最大大小等。
当我正在努力将C ++与我的PHP脚本集成并且有大量数据将从php推入队列时,C ++进程将在另一端读取该数据。 我已经设计了一种策略,其中我有两种类型的消息将由php编写。
1) Message length
2) Message data
但是,我在我的C ++应用程序中遇到了不可预测的行为,它负责读取长度/数据序列。
首先,我无法从php写入每个msg_send超过6000字节,这就是为什么我必须将消息分成完整消息大小的块。所以我的队列看起来像这样(括号中的msgtype)
尺寸(1)+大块(2)+大块(2)+大块(2)+大小(1)+大小(1)+大块(2)+大块(2) < / p>
虽然,我能够正确读取几个块,但是在某个地方的中间我开始收到错误并在队列中留下一些消息并使队列变得无用。
答案 0 :(得分:1)
限制取决于您的平台,操作系统版本和内核参数。您应该查阅系统文档。例如,您可以从Linux上的msgctl()获取一些信息。