Tags

, , , ,

Secara tradisional, untuk membuat aplikasi skeduler, kita mungkin harus membuat cron untuk setiap task yang akan kita jalankan. Ini bisa jadi sangat menyusahkan karena kita tidak lagi memiliki kontrol terhadap dan juga kita harus konek SSH ke server untuk menambah atau mengubah cron kita.

Di Yii2 kita bisa memanage aplikasi skeduler dengan sedikit lebih mudah. Caranya

Install deesoft/yii2-console.

Tambahkan di composer.json

"deesoft/yii2-console": "~1.0"

atau dari command line

composer require deesoft/yii2-console

Konfigurasi aplikasi console

Di config untuk aplikasi console, tambahkan

'controllerMap' => [
    'scheduler' => [
        'class' => 'dee\console\SchedulerController',
        'commands' => [
            // berisi entri task skeduler
            // 'my-command/task' => '@daily',
        ]
    ]
]

Menambahkan command scheduler ke cron.

Tambahkan entri berikut ke cron

* * * * * php /path/to/aplikasi/yii scheduler >> /dev/null 2>&1

Entri ini akan dieksekusi tiap menit yang akan memanage skeduler kita.

Membuat taks

Membuat taks adalah sama seperti membuat aplikasi console biasa. Kita buat controller yang diturunkan dari yii\console\Controller lalu definisikan action-nya. Selanjutnya adalah mendaftarkan task tersebut ke daftar commands dari scheduler.

        'commands' => [
            'command1/task' => '*/5 * * * *', // tiap 5 menit
            'command2/task' => '0 0 * * 0', // tiap 1 minggu sekali
            'command3/task' => '0 0,12 * * *', // sehari 2 kali
            // dan seterusnya
        ]
Advertisements