php备份数据库并发送邮箱,【笔记】记一次使用 Laravel 每天定时备份数据库并将备份文件以附件的形式发送到邮箱的开发过程...

1、创建定时任务

这里创建了一个叫backup的任务调度

2、配置发送邮件(使用QQ邮箱)

修改.env文件MAIL_DRIVER=smtp

MAIL_HOST=smtp.qq.com

MAIL_PORT=465

MAIL_USERNAME=test_send@qq.com

MAIL_PASSWORD=ocmvdkncpyusbjeg #并非QQ邮箱登录账号,是QQ邮箱转为SMTP等服务设置的授权码

MAIL_ENCRYPTION=ssl

3、编写程序

进入刚创建的任务调度文件,app/Console/Commands/Backup.php,编写handle方法$res = DB::select("show databases");

foreach ($res as $key => $val) {

if ($val->Database == "redu" || $val->Database == "dal") {

$content = "/usr/local/mysql/bin/mysqldump -hlocalhost -uroot -ptest " . $val->Database;

$content .= " >/usr/site/web/storage/backup/" . $val->Database . "-".date('Y-m-d').".sql";

exec($content);

}

}

//压缩刚生成的备份文件,需先安装zip

exec("zip -r /usr/site/web/storage/backup.zip /usr/site/web/storage/backup/*");

$flag = Mail::send('emails.test',['name'=>'数据备份'],function($message){

$to = 'test_receive@qq.com';

$message->to($to)->subject(date('Y-m-d').' 数据备份');

$attachment = storage_path('backup.zip');

//在邮件中上传附件

$message->attach($attachment,['as'=>'backup.zip']);

});

//删除压缩文件

exec("rm -f /usr/site/web/storage/backup.zip");

//删除备份文件

exec("rm -rf /usr/site/web/storage/backup/*");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值