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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
一些使用频率比较高的php函数
Oct 03 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
深入理解php的MySQL连接类
Jun 07 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
PHP中的类型约束介绍
May 11 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
PHP简单实现解析xml为数组的方法
May 02 PHP
利用PHP扩展Xhprof分析项目性能实践教程
Sep 05 PHP
PHP回调函数简单用法示例
May 08 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php事务处理实例详解
2014/07/11 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
vuex actions传递多参数的处理方法
2018/09/18 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
vue 实现把路由单独分离出来
2020/08/13 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
pandas的qcut()方法详解
2019/07/06 Python
Python 下载及安装详细步骤
2019/11/04 Python
python双向链表原理与实现方法详解
2019/12/03 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
应届大学生简历中的自我评价
2014/01/15 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
万年牢教学反思
2014/02/15 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
爱国口号
2014/06/19 职场文书
个人委托书范本
2014/09/13 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
公司财务管理制度
2015/08/04 职场文书