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 adodb连接带密码access数据库实例,测试成功
May 14 PHP
PHP面向对象——访问修饰符介绍
Nov 08 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
php中的常用魔术方法总结
Aug 02 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
合格的PHP程序员必备技能
Nov 13 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 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编码规范之注释和文件结构说明
2010/07/09 PHP
PHP插入排序实现代码
2013/04/04 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
对pandas中to_dict的用法详解
2018/06/05 Python
使用Python更换外网IP的方法
2018/07/09 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
python适合做数据挖掘吗
2020/06/16 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
无故旷工检讨书
2014/01/26 职场文书
教师绩效工资方案
2014/02/01 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
学校教师安全责任书
2014/07/23 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers
Java Spring读取和存储详细操作
2022/08/05 Java/Android