pnixx / delayed_job
PHP的异步延迟作业
2.0.0
2024-06-04 19:43 UTC
Requires
- php: >=8.1
- league/climate: ^3.7
- psr/log: ^3.0
- revolt/event-loop: ^1.0
- workerman/redis: ^v2.0
- workerman/workerman: ^5.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-24 21:10:45 UTC
README
#Delayed Job PHP
PHP的简单、高效的后台处理,使用线程处理多个作业。
##要求
- PHP 8.1+
- Redis 2.2+
- Composer
##安装
composer require pnixx/delayed_job
##工作进程
在后台简单运行工作进程
bin/run start
扩展运行工作进程
bin/run start --process 5 --queue mailer -i /path/to/init.php
要列出所有命令,请使用--help
或-h
参数。
要在部署后重新启动进程,请使用--restart
或-r
参数。将会有一个新的进程等待完成所有正在运行的进程。
##作业
作业类必须包含perform
方法
class TestJob extends PNixx\DelayedJob\Job { public function perform($args = []) { //Work process } }
作业抛出的任何异常都会使作业返回到工作状态,并带有超时。如果您想为重试作业设置限制尝试次数,请将$attempt
设置在您的类中。
作业还可以有setup
和completed
方法。如果定义了setup
方法,它将在perform
方法之前被调用。在作业成功后,将调用completed
方法。
class TestJob extends PNixx\DelayedJob\Job { /** * Attempt count used for only delayed tasks * default: 0 - always repeat until it reach success */ public static $attempt = 0; public function setup() { //Setup this job } public function perform($args = []) { //Work process } public function completed() { //Complete job callback } }
##排队作业
作业可以通过使用now
方法在当前线程中运行。如果您使用此方法,您可以在作业失败时处理异常。
//Run job in this thread without arguments TestJob::now(); //Run job in this thread with arguments TestJob::now(['name' => 'Jane']);
作业可以在后台线程中运行或添加到调度器中。
//Run job in a background TestJob::later('mailer'); //Run job in a background with arguments TestJob::later('mailer', ['name' => 'Jane']); //Add job in a scheduler. TestJob::later('mailer', ['name' => 'Jane'], strtotime('+1 day'));
##信号
QUIT
- 等待作业完成处理然后退出TERM
/INT
- 立即杀死作业然后退出而不保存数据
##作者
Sergey Odintsov, @pnixx