Menjalankan Task Scheduling Laravel di Server

Menjalankan Task Scheduling Laravel di Server

Selamat malam, kali ini saya akan share pengalaman menggunakan Task Schedule di laravel pada server/vps. Pada kasus ini saya menggunakan NGINX untuk web server dan Ubuntu 16.04 untuk Operating Systemnya, saya belum mencoba apakah cara ini berhasil berjalan pada apache atau tidak, tapi menurut saya cara ini akan berjalan pada semua web server, karena yang terpenting dari Task Scheduli disini adalah config cronjob pada Operating System kita.

Pada awalnya, saya bingung akan setting cront job ini karena saya memang belum paham bagaimana cara penggunaan cron job, namun sedikit demi sedikit saya coba googling cara untuk konfigurasi cron job pada sistem operasi Ubuntu 16.04 mengingat saya menggunakan Sistem Operasi Ubuntu untuk server saya.

Oke! sekarang kita coba konfigurasi cron job pada server kita. Pertama-tama kita butuh untuk konfigurasi schedule pada aplikasi kita, pada kasus ini saya akan coba penggunaan Laravel Backup Manager dan berikut contoh configurasi pada salah satu aplikasi saya :

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use \Carbon\Carbon;
class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //\App\Console\Commands\Inspire::class,
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('inspire')
                 ->everyMinute();
         $date = Carbon::now('Asia/Jakarta')->toW3cString();
        // $environment = env('APP_ENV');
         $schedule->command(
             "db:backup --database=pgsql --destination=dropbox --destinationPath=/'%Y'/{$date} --compression=gzip"
             )->everyFiveMinutes();
    }

    /**
     * Register the Closure based commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

 

Setelah kita push ke server dengan konfigurasi tersebut, kita belum mendapatkan hasil yaitu melakukan backup setiap 5 menit sekali, nah untuk menjalankan perintah eksekusi backup tersebut, kita membutuhkan cron job untuk mengeksekusi setiap waktu yang kita set pada Task Scheduling aplikasi kita.

Untuk melakukan konfigurasi cron job kita bisa melakukan konfigurasi penggunaan editor dulu untuk melakukan editing file konfignya, teman-teman dapat memasukan perintah pada terminal di server kita:

select-editor

setelah itu, akan muncul tampilan seperti berikut :

cron-setting-itsinergi

Setting Editor Cron Job

pilih no 2 untuk penggunaan editor crontab, setelah itu enter. lalu ketik perintah crontab -e untuk menambah job perintah yang akan kita masukan, setelah itu masukan konfigurasi seperti dibawah

setting-cron-ubuntu

Setting Cron Job di Ubuntu

Setelah itu tekan ctrl+x untuk keluar editor, pilih yes untuk menyimpan file lalu enter, maka task scheduling pada aplikasi kita otomatis akan berjalan sesuai perintahnya. selamat mencoba 🙂

Sumber :

  1. https://laravel.com/docs/5.4/scheduling#defining-schedules
  2. https://askubuntu.com/a/554348
About the Author
Saddam Almahali
Merupakan seorang hamba yang lemah dan sangat mempunyai banyak kekurangan, yang berusaha membagi setitik ilmu dalam dunia web.
%d blogger menyukai ini: