2017-05-31 57 views
0

我有一個頁面,用戶可以下載一些內容。有兩種類型的用戶 - 基本版和高級版。 基本用戶每月只能下載100個內容。在數據庫我有一個用戶表,其中包含downloadCounter列,每次用戶下載的東西列值增加1. 但我怎樣才能重置該值爲0每個新月?這可以直接在MySQL中完成,還是有Laravel和Carbon的方式?如何在一個月後將列值設置爲零

+2

使用cron作業來重置計數器並在第1天每月執行此命令 –

+0

https://laravel.com/docs/5.4/scheduling此處的文檔 –

+0

您是否有任何參考/教程來設置Amazon Instance上的cron作業( CentOS的)? ...我是一個Cron初學者。 – harunB10

回答

1

起初這樣

php artisan make:command testcommand 

現在,在應用程序\控制檯\命令目錄中創建testcommand.php創建一個命令。

打開該文件,然後添加$簽名是這樣的:

protected $signature = 'test_command'; 

您可以在以下文件中添加命令的一些應將描述。 然後你可以在文件的按鈕處找到一個名爲handle()的函數。你應該寫所有的代碼來重置你的計數。

public function handle() 
    { 
    // write code here to reset downloadCounter 
    } 

現在打開app \ Console \目錄下的Kernal.php文件,然後添加以下內容。

protected $commands = [ 
    // 
    Commands\testcommand::class, 
]; 

在此之後,添加下列安排這樣的功能:

protected function schedule(Schedule $schedule) 
    { 
     $schedule->command('test_command')->monthlyOn(1, '00:00')->timezone('Asia/Kathmandu'); 
    } 

您可以檢查作業是否工作或沒有通過簡單地在本地環境進入命令php artisan test_command。對於實況,你可以調度everyMinute()來檢查它的功能。

希望你能理解。

+0

添加示例案例在我嘗試這個例子之前,我想問你 - 這隻會在我的本地環境中工作嗎?我的服務器呢?就像我上面說過的,我正在使用Amazon Linux Instance。我應該添加什麼來啓動調度程序? – harunB10

+0

我對亞馬遜服務器不太瞭解。但是,通常它已經被服務器執行,不應該添加配置 –

+0

如果你只是在運行一個更新查詢,那麼跳過命令創建部分並使用閉包直接調度代碼。請參閱https://laravel.com/docs/5.4/scheduling#defining-schedules中的第一個示例 – Sandeesh

相關問題