带按钮的Laravel数据库备份到Dropbox

带按钮的Laravel数据库备份到Dropbox,laravel,backup,dropbox,Laravel,Backup,Dropbox,我将此安装到我的laravel项目中: backup-manager/laravel league/flysystem-dropbox 因为我可以将我的数据库备份到dropbox,但这可以通过终端使用php artisan完成,如何在我的设置页面上创建一个按钮,当我单击时,它可以调用此备份功能 我可以调用一个函数来触发这个备份函数吗?或者它可以由php artisan完成 我试着跑 Artisan::call('db:backup'); 并显示错误 Maximum execution tim

我将此安装到我的laravel项目中:

backup-manager/laravel
league/flysystem-dropbox
因为我可以将我的数据库备份到dropbox,但这可以通过终端使用php artisan完成,如何在我的设置页面上创建一个按钮,当我单击时,它可以调用此备份功能

我可以调用一个函数来触发这个备份函数吗?或者它可以由php artisan完成

我试着跑

Artisan::call('db:backup');
并显示错误

Maximum execution time of 60 seconds exceeded
当我从终点站跑出来的时候,一切都很好

如何从我的控制器运行此功能

php artisan db:backup --database=pgsql --destination=dropbox --destinationPath=`date +\%d-%m-%Y %H:%i:%s`-digitization.sql --compression=null
请有人帮帮我

这是我使用ajax编写的脚本

<script type="text/javascript">
    $("#backup").click(function(){
        var url = $(this).data("url");

        $.ajax({
            url: url
        }).done(function() {
            alert("asdsad");
        });
    });
</script>

$(“#备份”)。单击(函数(){
var url=$(this).data(“url”);
$.ajax({
url:url
}).done(函数(){
警报(“asdsad”);
});
});
试试这个


可以从调用artisan命令

大概

Route::get('/backupdatabase', function () {
    $exitCode = Artisan::call('db:backup');
}
如果您的数据库太大,可能无法在浏览器上运行,那么最好与cron作业一起使用。您可以找到cron作业设置文档。还有一些


希望对您有所帮助。

您可以通过代码调用artisan命令

所以如果你需要运行这个

php artisan db:backup--database=pgsql--destination=dropbox--destinationPath=
date+\%d-%m-%Y%H:%i:%s
-digitation.sql--compression=null

然后你可以这样做:

Route::get('/db_backup', function () {
    var $now = Carbon\Carbon::now();
    $exitCode = Artisan::call('db:backup',
        [
            '--database' => 'pgsql',
            '--destination' => 'dropbox',
            '--destinationPath' => $now->toDateTimeString().'-digitization.sql',
            '--compression' => null
        ]
    );
});
1) 在“刀片创建”按钮中:

 <button onclick="backup()"></button>
3) 在routes.php中:

  Route::post('/admin/system/db-backup', [
        'as'   => 'system.dbBackup',
        'uses' => 'Website\SystemController@postDbBackUp'
    ]);
4) 在控制器(SystemController.php)中:


它会一直加载,直到出现错误,因为最大执行时间超过60秒,会发生什么@vonec@yudijohn如果数据库的大小很大,它可能会超时,所以请尝试通过Cron作业将其放入。如果我使用Cron,那么备份会自动运行吗?所以我不能按备用按钮@vonec@yudijohn如果您需要一个按钮,您可以尝试通过ajax调用备份方法,而不是通过普通形式的post.edited应答来提供参数示例错误类“App\Http\Controllers\Carbon”未找到如果我使用控制器名称更改corbon,则此错误显示对未定义方法的调用illumb\Database\Query\Builder::now()
  Route::post('/admin/system/db-backup', [
        'as'   => 'system.dbBackup',
        'uses' => 'Website\SystemController@postDbBackUp'
    ]);
public function postDbBackUp () {
   $now =  Carbon::now()->format("Y-m-d-H-m-i").'-backup.sql';
    try {
        Artisan::call('db:backup',
            [
                '--database' => 'mysql',
                '--destination' => 'local',
                '--destinationPath' =>$now,
                '--compression' => 'gzip'
            ]
        );
    }
    catch(\Exception $e) {
        return Response::json([
            'success' => false,
            'errors' => ""
        ], 400);
    }
    return Response::json([
        'success' => true,
        'message' => 'success'
    ]);

}