PHP 进程通信-消息队列

作者: 会长__ | 来源:发表于2019-01-16 19:13 被阅读4次

消息队列是消息的链接表(一种常见的数据结构),但是这种消息队列存储于系统内核中(不是用户态),一般我们外部程序使用一个key来对消息队列进行读写操作。 在PHP中,是通过msg_*系列函数完成消息队列操作

<?php
// 创建消息队列键
$key = ftok( __DIR__, 'a' );
// 创建消息队列
$queue = msg_get_queue( $key, 0666 );
$pid = pcntl_fork();
if( $pid < 0 ){
    exit( 'fork error'.PHP_EOL );
} else if( $pid > 0 ) {
    // 读取消息队列
    msg_receive( $queue, 0, $msgtype, 1024, $message );
    echo $message.PHP_EOL;
    // 清除消息队列
    msg_remove_queue( $queue );
    pcntl_wait( $status );
} else if( 0 == $pid ) {
    // 写入消息队列
    msg_send( $queue, 1, "helloword" );
    exit;
}

执行


image.png

相关文章

  • PHP 进程通信-消息队列

    消息队列是消息的链接表(一种常见的数据结构),但是这种消息队列存储于系统内核中(不是用户态),一般我们外部程序使用...

  • PHP进程间通信--消息队列

    前面介绍了怎么通过消息管道(有名消息管道)进行进程间通信,下面介绍如何通过消息队列实现进程间通信。 首先我们来看一...

  • 高性能网站实用技巧之消息队列

    什么是消息队列? 消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。进程或者...

  • 高性能网站实用技巧之消息队列篇

    什么是消息队列 消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。进程或者线...

  • Swoole Process

    简介 基于C语言封装的进程管理模块,方便php的多进程编程 内置管道、消息队列接口,可方便实现进程间通信 自定义信号管理

  • 零散的小知识记录(待补充和修改)

    Android跨进程通信:Binder,socket/管道/消息队列,共享内存; linux进程间通信:管道,Bi...

  • 消息队列原理及选型

    什么是消息队列 消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。 什么时候...

  • IPC-消息队列

    消息队列概念 消息队列是IPC(进程间通信,inter process communication)中常用的一种方...

  • PHP内核队列使用一例

    写了一段代码,展示了PHP如何使用内核队列。 场景是:父进程产生消息,放入队列,子进程从队列读取消息,并处理。 如...

  • MQ及Kafka

      MQ(Message Queue)消息队列,是一种跨进程的通信方式,应用程序通过写入和检索出入队列的消息来通信...

网友评论

    本文标题:PHP 进程通信-消息队列

    本文链接:https://www.haomeiwen.com/subject/lwcvdqtx.html