新建队列任务
php artisan make:job SendSms
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class SendSms implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $phone;
public $params;
/**
* SendSms constructor.
* @param $phone
* @param $params
*/
public function __construct($phone, $shopSmsId, $params)
{
//
$this->phone = $phone;
$this->params = $params;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//发送短信的逻辑
//.......
}
}
修改app/Console/kernel.php
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$phone = '18888888888';
$shopSmsId = 42;
$params = ['code' => '666666', 'time' => '5分钟'];
$schedule->job(new SendSms($phone, $params))->everyTenMinutes();
}
启动调度器
在服务器中添加 Cron 入口
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
这个 Cron 会每分钟执行一次 Laravel 的命令行调度器。当 schedule:run 命令被执行的时候,Laravel 会根据你的调度执行预定的程序。