使用Button将Laravel数据库备份到Dropbox

时间:2015-11-19 06:27:29

标签: laravel backup dropbox

我将它安装到我的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>

3 个答案:

答案 0 :(得分:1)

1)在刀片中创建一个按钮:

<system.web>
<compilation debug="false" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>

2)在javascript部分:

 <button onclick="backup()"></button>

3)在routes.php中:

var token = $('input[name = _token]').val();
    function backup() {
        $.ajax({
            type: "POST",
            url: '/admin/system/db-backup',
            data: {
                _token: token,
            },
            success: function (result) {
              alert("ok")

            },
            error: function (errors) {

               alert("error");
            }
        });
    }

4)在控制器(SystemController.php)中:

  Route::post('/admin/system/db-backup', [
        'as'   => 'system.dbBackup',
        'uses' => 'Website\SystemController@postDbBackUp'
    ]);

答案 1 :(得分:0)

试试这个,

您可以从code itself调用artisan命令。

之类的,

Route::get('/backupdatabase', function () {
    $exitCode = Artisan::call('db:backup');
}

如果您的数据库大小太大,可能无法在浏览器中运行,因此最好与cron作业一起使用。你可以找到cron jobs setup文档here。还有一些packages

希望它有所帮助..

答案 2 :(得分:0)

您可以通过代码调用artisan命令。 http://laravel.com/docs/5.1/artisan#calling-commands-via-code

所以如果你需要运行这个

  

php artisan db:backup --database = pgsql --destination = dropbox --destinationPath = date +\%d-%m-%Y %H:%i:%s - digitization.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
        ]
    );
});