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自动加载机制的深入分析
Jun 08 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
php输出xml必须header的解决方法
Oct 17 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
PHP中cookie知识点学习
May 06 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
python 将md5转为16字节的方法
2018/05/29 Python
Python函数装饰器实现方法详解
2018/12/22 Python
Django model update的多种用法介绍
2020/03/28 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
社会实践感言
2014/01/25 职场文书
高中物理教学反思
2014/02/08 职场文书
中介业务员岗位职责
2014/04/09 职场文书
小学语文业务学习材料
2014/06/02 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
学校创先争优活动总结
2014/08/28 职场文书
关于迟到的检讨书
2015/05/06 职场文书
看雷锋电影观后感
2015/06/10 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
Python Numpy之linspace用法说明
2021/04/17 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python