daycry / queues
Codeigniter 4 的队列
v2.0.13
2024-08-13 10:37 UTC
Requires
- php: ^8.0
- codeigniter4/settings: ^2.2
- daycry/exceptions: ^1.0
- guzzlehttp/guzzle: ^7.8
- pda/pheanstalk: ^5.0
- supervisorphp/supervisor: ^5.1
Requires (Dev)
- angelov/phpunit-php-vcr: ^1.1
- codeigniter/phpstan-codeigniter: ^1.3
- codeigniter4/devkit: *
- codeigniter4/framework: ^4
- mikey179/vfsstream: ^1.6.7
- mockery/mockery: ^1.0
- php-vcr/php-vcr: ^1.7
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpcov: ^9.0.2
- rector/rector: 1.2.1
README
Codeigniter 4 的队列
使用 beanstalk、redis、sync 及服务总线(azure)队列的 Codeigniter 4
通过 composer 安装
使用 composer install 命令使用此包
> composer require daycry/queues
配置
运行命令
> php spark queues:publish
此命令将配置文件复制到您的应用程序命名空间中。然后您可以根据需要调整它。默认情况下,文件将位于 app/Config/Queue.php
。
允许的任务
使用作业类
URL
use Daycry\Queues\Job; $job = new Job(); $job = $job->setQueue('default') ->url('https://httpbin.org/post', [ 'verify' => false, 'method' => 'post', 'body' => ['param1' => 'p1'], 'dataType' => 'json', 'headers' => [ 'X-API-KEY' => '1234' ] ) ->enqueue();
COMMAND
use Daycry\Queues\Job; $job = new Job(); $job = $job->command('foo:bar')->enqueue('default');
CLASSES
use Daycry\Queues\Job; $job = new Job(); $job->classes(\Tests\Support\Classes\Example::class, 'run', ['constructor' => 'Contructor', 'method' => ['param1' => 1, 'param2' => 2]])->enqueue('default');
您可以在第三个参数中传递选项,该参数包含构造函数和方法中的参数。
SHELL
use Daycry\Queues\Job; $job = new Job(); $job->shell('ls')->enqueue('default');
作业计划
$dateTimeObj= new DateTime('now'); $dateTimeObj->add(new DateInterval("PT1H")); $job = new Job(); $job->shell('ls'); $job->scheduled($dateTimeObj); $result = $job->enqueue('default');
作业回调
您可以使用 'URL' 类型配置回调。
$job->setCallback('https://httpbin.org/post', ['method' => 'post', 'headers' =>['X-API-KEY' => '1234']]);
自定义方法
Beanstalk 和服务总线有自定义方法
BEANSTALK
use Daycry\Queues\Job; $job = new Job(); $job->shell('ls')->setPriority(10)->setTtr(3600)->enqueue('default');
SERVICE BUS
use Daycry\Queues\Job; $job = new Job(); $job->shell('ls')->setLabel('label')->enqueue('default');
使用工作器
> cd /path-to-your-project && php spark queues:worker default
默认情况下是队列的名称。
如果您只想执行一次工作器,可以这样做
> cd /path-to-your-project && php spark queues:worker default --oneTime
为了使用这些函数,类必须被扩展。
您可以为自定义早期和后期方法扩展工作器命令。
use Daycry\Queues\Job; $this->earlyChecks(Job $j); //job execution $this->lateChecks($j); $this->earlyCallbackChecks(Job $j); //callback execution $this->lateCallbackChecks($j);