Laravel backup 怎么手动备份并下载备份文件呢?

laravel backup 的自动备份非常好用
最近我这边需要一个手动备份并下载备份文件的需求,一直不知道怎么才能运行完命令之后把文件下载?

定义一个路由 操作备份命令
Route::get('db','DbexportController@export');

DbexportController控制器文件

public function export()
{
    base_path = base_path();
    $cmd = [
        "cd $base_path",
        "php artisan backup:run --only-db"
    ];
    foreach ($cmd as $value){
        shell_exec($value);
    }
}

我想在artisan 命令之后怎么能够获取到文件并下载下来?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 4

我试了一下,shell_exec执行的命令是异步的,所以当你此次请求结束,备份文件可能都没有备份好。
所以建议你使用 Laravel 的任务调度来定时生成备份文件,
当你想下载文件时,只要访问备份的文件夹就可以列出所有已经备份的文件了。

6年前 评论

或者你分两步执行,AJAX请求后台生成备份文件,当生成好了把备份文件名返回,然后再去下载

6年前 评论

@施国鹏 你好 请问一下 laravel backup支持同步下载吗?

6年前 评论

@hogus2037 同步下载应该和这个包没什么关系,你可以考虑这样做,
程序运行
查看备份文件夹的文件数目
使用 shell_exec 执行命令备份文件
sleep 一秒死循环(不断的读取备份文件夹是否有文件生成)这个步骤就提示备份中就行了
多出一个文件之后,就调用 laravel 的下载方法吧。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!