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中$this-&amp;gt;含义分析
Nov 29 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
Oct 30 PHP
设定php简写功能的方法
Nov 28 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如何得到当前页和上一页的地址?
2006/11/27 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
js图片处理示例代码
2014/05/12 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
节约用水演讲稿
2014/05/21 职场文书
银行求职信
2014/05/31 职场文书
春节超市活动方案
2014/08/14 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
2014年政教处工作总结
2014/12/20 职场文书
小学元宵节活动总结
2015/02/06 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书