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从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
Jun 24 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
PHP在线书签系统分享
Jan 04 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
php PDO异常处理详解
Nov 20 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
PHP children()函数讲解
Feb 03 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 PHP
php中pcntl_fork详解
Apr 01 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
PHP4实际应用经验篇(6)
2006/10/09 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
PDO::getAttribute讲解
2019/01/28 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
JS严格模式知识点总结
2018/02/27 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
python通过http下载文件的方法详解
2019/07/26 Python
python的等深分箱实例
2019/11/22 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
秘书英文求职信
2014/04/16 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
放假通知格式
2015/04/14 职场文书
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android