我接手了一个 Laravel 5.2 项目,其中
handle()
被 sync
队列驱动程序成功调用。
我需要一个支持
dispatch(..)->delay(..)
的驱动程序,并尝试配置 database
和 beanstalkd
,有多种变化,但没有成功 - handle()
不再被调用。
我正在使用 Forge 进行服务器管理,并设置了一个守护进程,该守护进程由 Supervisor 自动保持运行,用于以下命令:
php /home/forge/my.domain.com/envoyer/current/artisan 队列:listen --sleep=3 --tries=3
我还尝试过queue:work,命名“database/beanstalkd”,指定或不指定 --sleep、--tries、--deamon
我有 一个活跃的 beanstalkd 工作人员在 forge 上运行。
我已将 Envoyer 中的
beanstalkd
中的默认驱动程序设置为 \config\queue.php
和我的 QUEUE_DRIVER=beanstalkd
中的 .env
,这对于其他环境变量来说效果很好。
构建部署后,Envoyer 成功运行以下命令:
php artisan config:clear
php artisan migrate
php artisan cache:clear
php artisan queue:restart
我的
queue:listen
守护进程在 .forge 中生成日志 说它处理了一项作业!
[2017-07-04 08:59:13] 已处理:App\Jobs\GenerateRailwayReport
该工作类别的定义如下:
class GenerateRailwayReport extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
protected $task_id;
public function __construct($task_id)
{
$this->task_id = $task_id;
clock("GenerateRailwayReport constructed"); // Logs Fine
}
public function handle()
{
clock("Handling Generation of railway report"); // Never Logs
//Bunch of stuff all commented out during my testing
}
public function failed(Exception $e)
{
clock("Task failed with exception:"); // Never Logs
clock($e);
}
}
我的 .forge 中的 beanstalkd 工作日志中没有输出。
我的 failed_jobs 表中没有任何内容。
-真的非常感谢此时的任何帮助!
尝试添加 Dispatchable 和 Queueable 来使用
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;