mevyen/yii2-swoole-async 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mevyen/yii2-swoole-async

Composer 安装命令:

composer require mevyen/yii2-swoole-async

包简介

yii2异步任务扩展

README 文档

README

yii2异步任务扩展:基于swoole和yii2-console的异步任务实现,配置简洁,与Yii2无缝集成,只需要安装swoole扩展即可使用

swoole版本要求:>=1.8.1

实现原理

1、客户端发送异步console任务执行请求

2、服务端响应请求,并立即返回

3、服务端发起task执行任务,执行请求携带的所有任务

适用场景

需要客户端触发的耗时请求,客户端无需等待返回结果

安装

composer require mevyen/yii2-swoole-async "dev-master"

如何使用

1、新增配置文件params_swoole.php

return [
    'swooleAsync' => [
		'host'             => '127.0.0.1', 		//服务启动IP
		'port'             => '9512',      		//服务启动端口
		'process_name'     => 'swooleServ',		//服务进程名
		'open_tcp_nodelay' => '1',         		//启用open_tcp_nodelay
		'daemonize'        => '1',				//守护进程化
		'worker_num'       => '2',				//work进程数目
		'task_worker_num'  => '2',				//task进程的数量
		'task_max_request' => '10000',			//work进程最大处理的请求数
		'task_tmpdir'      => '/tmp/task',		 //设置task的数据临时目录
		'log_file'         => '/tmp/log/http.log', //指定swoole错误日志文件
		'client_timeout'   => '20',				 //client链接服务器时超时时间(s)
		'pidfile'          => '/tmp/y.pid', 		 //服务启动进程id文件保存位置

		//--以上配置项均来自swoole-server的同名配置,可随意参考swoole-server配置说明自主增删--
		'log_size'         => 204800000, 			 //运行时日志 单个文件大小
		'log_dir'          => '/tmp/log',			 //运行时日志 存放目录
	]
];

2、在console主配置文件(main.php)中增加controllerMap

'controllerMap' => [
    'swooleasync' => [
        'class' => 'mevyen\swooleAsync\SwooleAsyncController',
    ],
],

3、在站点主配置文件(main.php)中增加components

'components' => [
    'swooleasync' => [
        'class' => 'mevyen\swooleAsync\SwooleAsyncComponent',
    ]
]

4、服务管理

//启动
/path/to/yii/application/yii swooleasync/run start
 
//重启
/path/to/yii/application/yii swooleasync/run restart

//停止
/path/to/yii/application/yii swooleasync/run stop

//查看状态
/path/to/yii/application/yii swooleasync/run stats

//查看进程列表
/path/to/yii/application/yii swooleasync/run list

5、执行任务

namespace console\controllers;
use yii\console\Controller;

class TestController extends Controller 
{  
	public function actionSwooleasync(){
		$data = [
			"data":[
				[
					"a" => "test/mail",
					"p" => ["测试邮件1","测试邮件2"]
				],
				...
			],
			"finish" => [
				[
					"a" => "test/mail",
					"p" => ["测试邮件回调1","测试邮件回调2"]
				],
				...
			]
		];
		\Yii::$app->swooleasync->async(json_encode($data));
	}

	public function actionMail($a='',$b=''){
		echo $a.'-'.$b;
	}  
}

6、无人值守

服务启动脚本自带服务检测功能,因此可以将启动脚本配置为crontab用以自动保活服务

* * * * * /path/to/yii/application/yii swooleasync/run start >> /var/log/console-app.log 2>&1

7、demo使用方法

将站点目录指向/demo/test/backend/web 即可

mevyen/yii2-swoole-async 适用场景与选型建议

mevyen/yii2-swoole-async 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 339 次下载、GitHub Stars 达 47, 最近一次更新时间为 2016 年 09 月 30 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「extension」 「yii2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 mevyen/yii2-swoole-async 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 mevyen/yii2-swoole-async 我们能提供哪些服务?
定制开发 / 二次开发

基于 mevyen/yii2-swoole-async 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 339
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 49
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 47
  • Watchers: 4
  • Forks: 10
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-4-Clause
  • 更新时间: 2016-09-30