2015-11-19 64 views
1

我安裝這個我laravel項目:Laravel數據庫備份到Dropbox的巴頓

backup-manager/laravel 
league/flysystem-dropbox 

因爲我可以備份我的數據庫,Dropbox的,但它可以通過終端與PHP的工匠,如何使一個按鈕來完成在我的設置頁面上,當我點擊時,它可以調用這個備份功能?

是否有一個函數,我可以調用觸發此備份功能?或者只能由php工匠完成?

我嘗試運行

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> 

回答

0

試試這個,

您可以從code itself叫工匠命令。

類似,

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

如果你的數據庫規模如此之大,它從maynot瀏覽器的作品,所以更好地與cron作業使用。你可以找到cron作業安裝文檔here。還有一些packages

希望它有助於..

0

您可以通過代碼中調用工匠的命令。 http://laravel.com/docs/5.1/artisan#calling-commands-via-code

所以,如果你需要運行這個

PHP工匠DB:備份--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 
     ] 
    ); 
}); 
+0

它繼續加載,直到我得到錯誤,因爲最大執行時間超過60秒,會發生什麼? @vonec – yudijohn

+0

@yudijohn它可能會超時,如果你的數據庫大小很大,所以嘗試把它通過Cron喬布斯。 –

+0

如果我使用cron,那麼備份自動運行?所以我不能提供備份按鈕? @vonec – yudijohn

1

1)創建一個按鈕:

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

2)在JavaScript部分:

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"); 
      } 
     }); 
    } 

3)在routes.php文件:在控制器

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

4)(SystemController。php):

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' 
    ]); 

}