atlasmobile/yii2-queue
Composer 安装命令:
composer require atlasmobile/yii2-queue
包简介
yii2 queue component
关键字:
README 文档
README
This component provides simple queue wrapper
Requirements
Installation
The preferred way to install this extension is through composer.
Either run
composer require --prefer-dist "atlasmobile/yii2-queue=*"
or add
"atlas/yii2-queue": "*"
to the require section of your composer.json file.
Application configuration
To use this extension, simply add the following code in your application configuration:
return [ //.... 'components' => [ 'queue' => [ 'class' => \atlasmobile\queue\RedisQueue::class, ], 'redis' => [ 'class' => \yii\redis\Connection::class, 'hostname' => 'localhost', 'port' => 6379, 'database' => 0 ], 'controllerMap' => [ 'queue' => \atlasmobile\queue\console\controllers\QueueController::class, ], ], ];
First Job
First create a Job process class
namespace console\jobs; class MyJob implements \atlasmobile\queue\QueueHandler { public function run(\atlasmobile\queue\Job $job, $data) { //process $data; var_dump($data); } }
OR
namespace console\jobs; class MyJob extends \atlasmobile\queue\BaseTask { public function beforeRun(Job $job, QueuePayload $payload) { //todo before running task } public function run(\atlasmobile\queue\Job $job, $data) { //process $data; var_dump($data); } public function afterRun(Job $job, QueuePayload $payload) { //todo after running task } public function onFail(Job $job, QueuePayload $payload, \Exception $exception) { //todo what to do on fail running task } }
and than just push job to queue
// You can use component directly or static method to push job to queue: \atlasmobile\queue\helpers\Queue::push($job, $data = null, $queue = 'default', $options = []) // Push job to the default queue and execute "run" method Yii::$app->queue->push(\console\jobs\MyJob::class, ['a', 'b', 'c']); // or push it and execute any other method Yii::$app->queue->push('\console\jobs\MyJob@myMethod', ['a', 'b', 'c']); // or push it to some specific queue Yii::$app->queue->push(\console\jobs\MyJob::class, ['a', 'b', 'c'], 'myQueue'); // or both Yii::$app->queue->push('\console\jobs\MyJob@myMethod', ['a', 'b', 'c'], 'myQueue');
Since 1.0.5 available delayed tasks
// Just a string Yii::$app->queue->pushDelayed(\console\jobs\MyJob::class, '+3 hours', ['a', 'b', 'c']); // Or \DateTime $dt = new \DateTime('now'); $dt->modify('+1 week')->modify('+3 days'); Yii::$app->queue->pushDelayed(\console\jobs\MyJob::class, $dt, ['a', 'b', 'c']); // Or oldschool Yii::$app->queue->pushDelayed(\console\jobs\MyJob::class, time() + 86400, ['a', 'b', 'c']);
Listener
If you wanna use supervisor, put this config:
[program:yiiqueue] command=php /path/to/project/yii queue/listen process_name=%(program_name)s_%(process_num)02d numprocs=4 ; customize workers directory=/path/to/project autostart=true autorestart=true user=nginx ; executor user stdout_logfile=/path/to/project/runtime/logs/queue.out.log stdout_logfile_maxbytes=10MB stderr_logfile=/path/to/project/runtime/logs/queue.err.log stderr_logfile_maxbytes=10MB
Queue listener examples:
# Process a first job from default queue and than exit the process
./yii queue/work
# continuously process jobs from default queue
./yii queue/listen
# process a job from specific queue and than exit the process
./yii queue/work --queue=queueName
# continuously process jobs from specific queue
./yii queue/listen --queue=myQueue
Delayed listener examples (since 1.0.5):
# Pop list of delayed jobs and if "time to work", puts them to queue ./yii queue/delayed # Or for supervisor or just for "&" ./yii queue/listen-delayed
Method listen-delayed by defaults check new delayed jobs every 30 seconds, but u can set --pollFreqSecs=MY_SECONDS
Also you can store failed jobs into db
First, run migration to create table with failed jobs
./yii queue/failed-table
and run
./yii queue/listen --storeFailedJobs=true
Then after some time when table will filled with failed jobs, do next:
./yii queue/failed
This command will add to queue all failed jobs in FIFO (first-in-first-out) order
To flush table with failed jobs:
./yii queue/failed-flush
Monitor
In some cases you may want to see how much and/or what jobs are queued now. To see basic information, use:
./yii queue/monitor
atlasmobile/yii2-queue 适用场景与选型建议
atlasmobile/yii2-queue 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.25k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2015 年 12 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「queue」 「extension」 「yii2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 atlasmobile/yii2-queue 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 atlasmobile/yii2-queue 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 atlasmobile/yii2-queue 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A custom URL rule class for Yii 2 which allows to create translated URL rules
PHP AMQP Binding Library
A Laravel package to monitor queue jobs.
The Yii2 extension uses jQuery jquery.carousel-1.1.min.js and makes image carousel from php array of structure defined.
TYPO3 CMS extension to create gallery content element with preset crop ratios and pagination
UI Kit 3 Extension for Yii2
统计信息
- 总下载量: 5.25k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-4-Clause
- 更新时间: 2015-12-14