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中的extract的作用分析
Apr 09 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
php输入数据统一类实例
Feb 23 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
教你php如何实现验证码
Jan 20 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
php实现数字补零的方法总结
Sep 12 PHP
PHP使用递归按层级查找数据的方法
Nov 10 PHP
php微信小程序解包过程实例详解
Mar 31 PHP
PHP控制循环操作的时间
Apr 01 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格式化工具Beautify PHP小小BUG
2008/04/24 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
js返回顶部实例分享
2016/12/21 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python开发利器之ulipad的使用实践
2017/03/16 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
python使用zip将list转为json的方法
2018/12/31 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
css3学习心得分享
2013/08/19 HTML / CSS
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
私有程序集与共享程序集有什么区别
2013/04/05 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
市场营销专业毕业生自荐信
2013/11/02 职场文书
财务会计毕业生个人求职信
2014/02/03 职场文书
农村改厕实施方案
2014/03/22 职场文书
国际贸易求职信
2014/07/05 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA