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

时间:2015-09-20 11:11:27

标签: php laravel-5.1

我试图通过laravel 5.1队列服务设置提醒, 工作执行得很好,唯一的问题就是它不会拖延工作,我不确定我是否正确地做到了,有人能告诉我,我做错了吗?我的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();
 }
}

并且调用该作业的控制器函数是:

 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;
}

在调用函数之前,我在终端上运行php artisan queue:listen。 非常感谢大家:)

p.s新用户插入句柄功能,仅用于测试。

1 个答案:

答案 0 :(得分:1)

你可能在env文件QUEUE_DRIVER=sync中有。它无法使用它。