简体   繁体   English

laravel 5.1队列作业延迟不起作用

[英]laravel 5.1 queue job delay doesn't work

i trying to set a reminder via laravel 5.1 queue service, the job executes and works fine, the only problem it's that it not delaying the job, i'm not sure if i'm doing it the right way, can someone tell me what am i doing wrong please? 我试图通过laravel 5.1队列服务设置提醒,该工作执行并正常工作,唯一的问题是它没有延迟工作,我不确定我是否做对了,有人可以告诉我什么请问我做错了吗? my SetReminder job class looks like that 我的SetReminder作业类别如下

namespace LM2\Jobs;

use LM2\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;
use LM2\Models\Lead;
use LM2\Models\User;

class SetReminder extends Job implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, SerializesModels;

public $user;
public $lead;

public function __construct(User $user, Lead $lead)
{
    $this->user = $user;
    $this->lead = $lead;
}

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    $user = new User(['client_id' => 1, 'name'=>'asdasd', 'password' => '123' , 'email' => microtime().'@gmail.com']);
    $user->save();
 }
}

and the controller function calling that job is: 调用该作业的控制器函数为:

 public function setReminder($lead_id, Request $request)
{
    $due_time = $request->input('due_time');
    $message = $request->input('message');
    $user = \Auth::user();
    $lead = Lead::where('_id',$lead_id)->first();
    $lead->reminders = ['message' => $message , 'due_time' => $due_time, 'user_id' => $user->id, 'active' => 1];
    $lead->save();
    $job = (new SetReminder(
            \Auth::user(),
            Lead::find($lead_id)
        ))->delay(10);
    $this->dispatch($job);
    return $lead;
}

before calling the function i ran php artisan queue:listen at the terminal. 在调用该函数之前,我在终端运行了php artisan queue:listen thanks a lot everyone :) 非常感谢大家:)

ps the new user inserted in the handle function it's just for testing it. ps新用户插入了handle函数,仅用于测试。

You probablly have in the env file QUEUE_DRIVER=sync . 您可能在环境文件QUEUE_DRIVER=sync It wont work with it. 它不会工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM