php swoole多进程/多线程用法示例【基于php7nts版】


Posted in PHP onAugust 12, 2019

本文实例讲述了php swoole多进程/多线程用法。分享给大家供大家参考,具体如下:

swoole的多线程其实就是多进程,进程创建太多切换的开销很大,如果能用上pthreads建议用pthreads,因为我用的是php7nts版本没办法用pthreads

swoole实例如下:

<?php
/**
 * 创建多进程
 */
$worker_num     = 6;    // 默认进程数
$workers       = [];    // 进程保存
$redirect_stdout  = false;  // 重定向输出 ; 这个参数用途等会我们看效果
for($i = 0; $i < $worker_num; $i++){
  $process = new swoole_process('callback_function', $redirect_stdout);
  // 启用消息队列 int $msgkey = 0, int $mode = 2
  $process->useQueue(0, 2);
  $pid = $process->start();
  // 管道写入内容
  $process->write('index:'.$i);
  $process->push('进程的消息队列内容');
  // 将每一个进程的句柄存起来
  $workers[$pid] = $process;
}
/**
 * 子进程回调
 * @param swoole_process $worker [description]
 * @return [type]         [description]
 */
function callback_function(swoole_process $worker)
{
  $recv = $worker->pop();
  echo "子输出主内容: {$recv}".PHP_EOL;
  //get guandao content
  $recv = $worker->read();
  $result = doTask();
  echo PHP_EOL.$result.'==='.$worker->pid.'==='.$recv;
  $worker->exit(0);
}
/**
 * 监控/回收子进程
 */
while(1){
  $ret = swoole_process::wait();
  if ($ret){// $ret 是个数组 code是进程退出状态码,
    $pid = $ret['pid'];
    echo PHP_EOL."Worker Exit, PID=" . $pid . PHP_EOL;
  }else{
    break;
  }
}
/**
 * doTask
 * @return [type] [description]
 */
function doTask()
{
  sleep(2);
  return true;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
php实现文件下载实例分享
Jun 02 PHP
Yii框架登录流程分析
Dec 03 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
php中通用的excel导出方法实例
Dec 30 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
php png失真的原因及解决办法
Nov 17 PHP
PHP基于swoole多进程操作示例
Aug 12 #PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 #PHP
php使用pecl方式安装扩展操作示例
Aug 12 #PHP
PHP实现与java 通信的插件使用教程
Aug 11 #PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 #PHP
thinkPHP和onethink微信支付插件分享
Aug 11 #PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 #PHP
You might like
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP重定向的3种方式
2013/03/07 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
Python实现KNN邻近算法
2021/01/28 Python
一百多行python代码实现抢票助手
2018/09/25 Python
python 生成图形验证码的方法示例
2018/11/11 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
django rest framework 自定义返回方式
2020/07/12 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
Puma印度官网:德国运动品牌
2019/10/06 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
大学生见习报告范文
2014/11/03 职场文书
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫