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 4.2书写安全的脚本
Oct 09 PHP
几个学习PHP的网址
Nov 25 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php类中的各种拦截器用法分析
Nov 03 PHP
php线性表的入栈与出栈实例分析
Jun 12 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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数据饼图效果实现代码
2011/11/23 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
Python模块学习 datetime介绍
2012/08/27 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
python 性能优化方法小结
2017/03/31 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
python实现简单银行管理系统
2019/10/25 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
中软Java笔试题
2012/11/11 面试题
Order by的几种用法
2013/06/16 面试题
火锅店创业计划书范文
2014/02/02 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
公证处委托书
2015/01/28 职场文书