swoft自定义进程
bean.php
中添加一下配置
'processPool' => [// 进程处理类,必填'class' => \Swoft\Process\ProcessPool::class,// 进程数,进程id从排序,必填'workerNum' => 3,// IPC类型,进程间通信类型,参数参考swoole,选填'ipcType' => SWOOLE_IPC_NONE// 是否开启协程,默认是开启,选填'coroutine' => true
]
进程处理文件位于App/Process
必须继承ProcessInterface
使用注释@Process
标记
workerId=0
或workerId={1,2}
选择进程id,id从0开始,可以安排多个进程;workerId 如果不写默认情况,当前程序流程绑定到其它未绑定的进程
Worker1Process.php
示例
<?php declare(strict_types=1);
/*** This file is part of Swoft.** @link https://swoft.org* @document https://swoft.org/docs* @contact group@swoft.org* @license https://github.com/swoft-cloud/swoft/blob/master/LICENSE*/namespace App\Process;use Swoft\Amqp\Amqp;
use Swoft\Log\Helper\CLog;
use Swoft\Process\Annotation\Mapping\Process;
use Swoft\Process\Contract\ProcessInterface;
use Swoole\Coroutine;
use Swoole\Process\Pool;/*** Class Worker1Process** @since 2.0** @Process(workerId=0)*/
class Worker1Process implements ProcessInterface
{/*** @param Pool $pool* @param int $workerId*/public function run(Pool $pool, int $workerId): void{while (true) {CLog::info('worker-' . $workerId);CLog::info('run method: '.__METHOD__);$channel = Amqp::channel('channel_1');$channel->listen(function ($message){//$message:数据结构(json_encode)之后//{"body":"hey!-----9","body_size":10,"is_truncated":false,"content_encoding":null,"delivery_info":{"channel":{"callbacks":{"amq.ctag-epGZgfHej3YrjZk2FBvp0A":{}}},"delivery_tag":99,"redelivered":false,"exchange":"exchange_test","routing_key":"example-test-routing-key","consumer_tag":"amq.ctag-epGZgfHej3YrjZk2FBvp0A"}}CLog::info('message:'. json_encode($message));});$name = 'steve';vdump(context()->getResponse()->withContent('Hello' . ($name === '' ? '' : ", {$name}")));Coroutine::sleep(3);}}
}
进程单独启动
// 启动
php bin/swoft process:start
// 后台
php bin/swoft process:start -d
// 重启,进程池全部重启
php bin/swoft process:reload
// 停止,进程池全部停止
php bin/swoft process:stop
swoft自定义进程相关推荐
- multiprocessing创建自定义进程类
1.继承Process 2.编写自己的__init__,同时加载父类init方法 3.重写run方法,可以通过生成的对象调用start自动运行 from multiprocessing import ...
- Python中的自定义进程和进程池
Python中的自定义进程和进程池 文章目录 Python中的自定义进程和进程池 一.自定义进程 1.步骤: 2.例 进程池 1.概念 2.介绍--multiprocess.Pool 3.非阻塞式进程 ...
- Python 进程 自定义进程子类 继承
"""自定义进程子类""" from multiprocessing import Process, current_process imp ...
- Python进程池及自定义进程
Python进程池及自定义进程 微信关注公众号:夜寒信息 致力于为每一位用户免费提供更优质技术帮助与资源供给,感谢支持! 这次给大家分享Python的进程池及自定义进程,由于Python基础已 ...
- 阿里云ECS主机自定义进程监控
由于业务的关系我们用的是阿里云的ECS主机,需要对业务进程需要监控,查看后发现阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置 ...
- swoft2 小白教程系列-进程篇
swoft2 自定义用户进程来定期执行用户自定义任务 swoft2 支持进程池解决多进程并发执行用户自定义任务 swoft2 进程详解 多进程程序设计能解决很多有意义的问题,程序的主进程运行核心任务, ...
- php swoft 路由,Swoft 源码解读
PHP 里面的 yii/laravel 框架算是非常「重」的了. 这里的 重 先不具体到 性能 层面, 主要是框架的设计思想和框架集成的服务, 让框架可以既可以快速解决很多问题, 又可以轻松扩展. P ...
- python3 进程
python3 进程 1.开进程的两种方式: 1. 使用内置的进程 #!/usr/bin/env python #coding:utf-8 #Created by Andy @ 2017/9/17fr ...
- 服务器怎么查看性能,查看服务器进程性能查看
查看服务器进程性能查看 内容精选 换一换 分析辅助软件是一款支持部署到多台服务器目标环境上,实现对整个业务集群的数据采集和优化的组件.已成功登录Java性能分析.待安装分析辅助软件的服务器已开启ssh ...
最新文章
- Microsoft SQL Server 2008 express试用心得
- MathType中的一些精彩技巧
- 博士申请 | ​麦吉尔大学智能自动化实验招收2022年秋季入学全奖博士生
- php删除一张表数据的时候 把另一张表的数据也删除,剔除第一张表的数据时,修改第二张表的相关字段的数值...
- python 字符串 4位一组_Python基础4- 字符串
- 2017.9.2 最大半联通子图 思考记录
- iOS 转盘动画效果实现
- 如何理性看待 5G 速率提升?
- OpenCV Laplacian 拉普拉斯变换
- OSG 初始化为非全屏窗口
- 惯性导航算法(二)-欧拉角法(下)+方向余弦矩阵(上)
- 微信视频号如何申请认证,流程是什么?
- 信息流广告如何操作?(含CPC、OCPC、CPM、eCPM、CTR等)
- VR虚拟现实、AR增强现实、MR混合现实三者到底有什么区别?
- 领先三星、华为,全球首款可折叠柔性屏手机惊艳上市
- 将当前容器保存为本地镜像
- IC前后端001:高扇出的危害
- 命令反查dns,命令ip地址dns反查
- JSJ——java基本概念二
- awk分析话单列子 tcp连接失败率,及失败连接的topN