我试图通过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新用户插入句柄功能,仅用于测试。
答案 0 :(得分:1)
你可能在env文件QUEUE_DRIVER=sync
中有。它无法使用它。