php 新建一个进程,怎么在PHP中使用process模块创建子进程

本文介绍了如何在PHP中使用swoole_process模块创建子进程,包括同步阻塞管道、异步事件监听和消息队列三种通信方式,并展示了进程间通信的示例代码,帮助开发者更好地理解和使用PHP进程管理。
摘要由CSDN通过智能技术生成

怎么在PHP中使用process模块创建子进程

发布时间:2021-03-20 16:05:20

来源:亿速云

阅读:53

作者:Leah

本篇文章给大家分享的是有关怎么在PHP中使用process模块创建子进程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

swoole中为我们提供了一个进程管理模块 Process,替换PHP的 pcntl 扩展,方便我们创建进程,管理进程,和进程间的通信。

swoole提供了2种进程间的通信:

1、基于 unix socket 的管道 pipe。

2、基于 sysvmsg 的消息队列。

我们可以通过 new swoole_process() 快速的创建一个进程,默认会创建一个 SOCK_DGRAM 类型的管道,用于进程间的通信,当然可以设置成其他类型,也可以不创建。

一、通过同步阻塞管道进行进程间通信<?php

$worker_process_nums = 5;

$worker_process = [];

for ($i = 0; $i 

//创建子进程

//默认为每个子进程创建一个管道,如果不想创建设置$pipe_type参数为false

//注意管道默认是同步阻塞,半双工,如果读取不到数据就会阻塞

$worker = new swoole_process(function (swoole_process $worker) {

//注意,如果主进程中不写数据write(),那么子进程这里read()就会阻塞

$task = json_decode($worker->read(), true);

//进行计算任务

$tmp = 0;

for ($i = $task['start']; $i 

$tmp += $i;

}

echo '子进程 PID : ', $worker->pid, '

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值