Laravel5.6使用定时任务实现定时发邮件

本文方法是利用Linux的crontab定时任务来协助实现Laravel的任务调度

一、创建项目

1、打开终端,执行命令:laravel new crontab,包括数据库,确保本地能正常运行。随后部署上线。phpstrom连接服务器,确保代码可以正常提交到服务器。
2、创建任务类,终端执行命令:php artisan make:command SendEmail
3、修改 SendEmail.php 文件

protected $signature = 'email:send';
protected $description = '定时发邮件测试';

4、先不慌做发邮件,先来个文件定时写入测试,在文件中写入当前时间,代码如下

public function handle()
{
   
  //写入文件
  file_put_contents("/var/www/crontab/file.txt", date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND);
}

注:这里的PHP_EOL代表时间列表换行,后面的FILE_APPEND是指往后追加一条记录。

5、修改app/Console/Kernel.php文件:

protected $commands = [
    Commands\SendEmail::class //注册任务类
];

protected function schedule(Schedule $schedule)
{
   
	//每分钟执行一次文件的写入
    $schedule->command('email:send')
        ->everyMinute();
}

6、服务器上,进入项目:cd /var/www/crontab,先查看服务器上PHP安装路径,执行命令:which php,我的PHP路径是/usr/bin/php,然后把路径复制保存下来,接着执行命令:crontab -e,选择打开方式,建议选择第4个。在最后一行增加如下代码:

* * * * * /usr/bin/php /var/www/crontab/artisan schedule:run >> /dev/null 2>&1

注:这里前面一部分/usr/bin/php代表服务器上PHP的安装路径,后面一部分代表项目目录。
另外上面的命令前面的5个星号*分别代表分钟、小时、天、月、星期。
分钟:0-59的整数,默认星号和星号/1 代表1分钟。
小时:0-23的整数。
天:1-31的整数。
月:1-12的整数。
星期:0-7的整数,0和7都代表星期日。
crontab -l 可以列出当前的定时任务。

7、启动任务sudo service cron restart,打开FZ,查看服务器上项目的根目录下的file.txt文件中是否有时间写入并且每分钟执行一次。确认成功后,执行命令 service cron stopexit退出定时任务。

二、实现定时发邮件

接下来要做的是把写入文件的操作换成定时发邮件。在.env文件配置发邮件所需的相关信息。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=244500972@qq.com
MAIL_PASSWORD=***** //
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值