2015-09-20 75 views
0

我试图通过laravel 5.1队列服务设置提醒, 工作执行并且工作正常,唯一的问题是它不会延迟工作,我不确定是否我做正确的方式,有人可以告诉我我做错了什么吗?我SetReminder作业类看起来像laravel 5.1队列作业延迟不起作用

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新用户插入句柄函数只是为了测试它。

+0

有人有想法吗? :/ – benjah

+0

对我而言,延迟不是一种方法。 – rajangupta

回答

1

你可能在env文件中有QUEUE_DRIVER=sync。它不会与它合作。