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新手上路(六)
Oct 09 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
php实现文件编码批量转换
Mar 10 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
Laravel 连接(Join)示例
Oct 16 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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
PHP新手上路(十一)
2006/10/09 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
Python中操作MySQL入门实例
2015/02/08 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
企划专员岗位职责
2013/12/09 职场文书
公证书样本
2014/04/10 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
员工2014年度工作总结
2014/12/09 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
大学生入党群众意见书
2015/06/02 职场文书