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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 PHP
nginx下安装php7+php5
Jul 31 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
关于laravel框架中的常用目录路径函数
Oct 23 PHP
php回调函数处理数组操作示例
Apr 13 PHP
PHP 超级全局变量相关总结
Jun 30 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四舍五入精确小数位及取整
2014/01/14 PHP
php mail to 配置详解
2014/01/16 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php实现数据库的增删改查
2017/02/26 PHP
js函数般调用正则
2008/04/08 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
大学生的四年学习自我评价
2013/12/13 职场文书
企业授权委托书范本
2014/04/02 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年文秘工作总结
2014/11/25 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
飞越疯人院观后感
2015/06/09 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
修辞手法有哪些?
2019/08/29 职场文书