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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
php中如何防止表单的重复提交
Aug 02 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
smarty中常用方法实例总结
Aug 07 PHP
php 流程控制switch的简单实例
Jun 07 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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.ini 中文版
2006/10/28 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
php下Memcached入门实例解析
2015/01/05 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
python实现文件快照加密保护的方法
2015/06/30 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
python3实现随机数
2018/06/25 Python
Python的argparse库使用详解
2018/10/09 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
python如何调用百度识图api
2020/09/29 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
大学生个人事迹材料
2014/01/21 职场文书
大学生心理活动总结
2014/07/04 职场文书
交通事故委托书范本
2014/09/28 职场文书
2014年维修工作总结
2014/11/22 职场文书
硕士学位论文评语
2014/12/31 职场文书