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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
PHP初学入门
Nov 19 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
php按单词截取字符串的方法
Apr 07 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
php经典趣味算法实例代码
Jan 21 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(8) php 数组
2010/03/05 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python之eval()函数危险性浅析
2014/07/03 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python解析yaml文件过程详解
2019/08/30 Python
python实现网页录音效果
2020/10/26 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
中专生的个人自我评价
2013/12/11 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
家装电话营销开场白
2015/05/29 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript