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
]