Cara Kerjanya: Anda akan menambahkan satu baris konfigurasi di server Anda yang pada dasarnya mengatakan: "Hai server, setiap menit, tolong jalankan perintah php spark tasks:run di dalam direktori proyek saya." php spark db:seed DatabaseSeeder =================================================== =================================================== =================================================== Konsep Dasar: Apa Itu Cron Job dan Mengapa Kita Membutuhkannya? Cron Job: Anggap saja ini sebagai alarm atau pengingat di server Anda. Anda bisa memberitahunya, "Hei server, tolong jalankan perintah ini setiap menit," atau "setiap hari jam 1 pagi," atau jadwal spesifik lainnya. Peran CodeIgniter Scheduler: File app/Config/Tasks.php yang sudah Anda buat berisi daftar tugas dan jadwalnya (misal: bills:generate jam 1 pagi, notif:kirim-tunggakan jam 8 pagi). Namun, scheduler ini tidak bisa "bangun" sendiri. Ia perlu dipicu secara eksternal. Hubungan Keduanya: Cron Job bertugas sebagai "pemicu" universal. Kita akan mengatur Cron Job untuk "membangunkan" CodeIgniter setiap menit. Setelah bangun, CodeIgniter akan melihat jam dan memeriksa file app/Config/Tasks.php untuk memutuskan apakah ada tugas yang harus dijalankan pada menit itu. Alur Kerjanya: Setiap Menit: Cron Job di server Anda menjalankan perintah: php spark tasks:run. CodeIgniter Bangun: Perintah ini mengaktifkan Task Scheduler CodeIgniter. Scheduler Mengecek Jadwal: Scheduler melihat app/Config/Tasks.php. Apakah sekarang jam 01:00? Jika ya, jalankan command('bills:generate'). Apakah sekarang jam 08:00? Jika ya, jalankan command('notif:kirim-tunggakan'). Jika tidak ada jadwal yang cocok, Scheduler tidak melakukan apa-apa dan selesai. Cara Mengatur Cron Job di Berbagai Jenis Server Pengaturan Cron Job sedikit berbeda tergantung pada jenis hosting yang Anda gunakan. Berikut adalah dua skenario paling umum: Skenario A: Menggunakan cPanel (Umum di Shared Hosting) Ini adalah cara yang paling umum jika Anda menggunakan shared hosting. Login ke cPanel Anda. Cari ikon "Cron Jobs". Biasanya ada di bawah kategori "Advanced" atau "Lanjutan". Di halaman Cron Jobs, Anda akan melihat bagian "Add New Cron Job". Atur Jadwal (Common Settings): Pilih "Once Per Minute (* * * * *)" dari dropdown "Common Settings". Ini akan otomatis mengisi semua kolom waktu dengan tanda bintang (*). Isi Kolom Command: Ini adalah bagian terpenting. Anda perlu memasukkan path lengkap ke direktori proyek Anda dan perintah spark. Format Perintah: bash cd /home/your_cpanel_username/public_html/pw7 && /usr/bin/php spark tasks:run >> /dev/null 2>&1 Penjelasan Perintah: cd /home/your_cpanel_username/public_html/pw7: Pindah direktori ke folder root proyek Anda. Ganti your_cpanel_username dengan username cPanel Anda dan sesuaikan path jika proyek Anda tidak berada di public_html/pw7. &&: Operator yang berarti "jika perintah sebelumnya berhasil, jalankan perintah berikutnya". /usr/bin/php: Menggunakan path absolut ke interpreter PHP di server. Ini lebih andal daripada hanya php. spark tasks:run: Perintah CodeIgniter untuk menjalankan scheduler. >> /dev/null 2>&1: Ini sangat penting untuk mencegah server mengirim email notifikasi kepada Anda setiap menit. Ini mengalihkan semua output (termasuk error) ke "tempat sampah". Klik "Add New Cron Job". Selesai! Server Anda sekarang akan memicu scheduler CodeIgniter setiap menit. Skenario B: Menggunakan VPS/Server dengan Akses SSH Jika Anda memiliki akses root atau SSH ke server Anda (misalnya di DigitalOcean, Linode, dll.), caranya lebih langsung. Hubungkan ke server Anda melalui SSH: bash ssh username@alamat_ip_server_anda Buka editor crontab: bash crontab -e Jika ini pertama kalinya, Anda mungkin diminta memilih editor. Pilih nano karena paling mudah digunakan (biasanya opsi nomor 1). Tambahkan baris baru di akhir file: Gunakan tombol panah untuk pindah ke baris paling bawah, lalu ketik atau tempel baris berikut: cron * * * * * cd /var/www/html/pw7 && /usr/bin/php spark tasks:run >> /dev/null 2>&1 Penting: Ganti /var/www/html/pw7 dengan path absolut ke direktori root proyek Anda. Anda bisa menemukan path ini dengan menjalankan perintah pwd di dalam folder proyek Anda. Simpan dan Keluar: Jika menggunakan nano, tekan Ctrl + X. Ketik Y untuk konfirmasi penyimpanan. Tekan Enter untuk menyimpan ke file yang ada. Anda akan melihat pesan seperti crontab: installing new crontab. Tips Tambahan dan Debugging Bagaimana cara tahu path PHP? Di terminal SSH, jalankan which php. Ini akan memberikan path absolut seperti /usr/bin/php atau /usr/local/bin/php. Cron Job tidak berjalan? Untuk debugging, ganti sementara bagian >> /dev/null 2>&1 dengan path ke file log. Ini akan merekam semua output dari command. cron # Contoh untuk debugging * * * * * cd /path/to/project && /usr/bin/php spark tasks:run >> /path/to/project/writable/logs/cron.log 2>&1 Setelah itu, Anda bisa memeriksa isi file cron.log untuk melihat pesan error atau output lainnya. Jangan lupa untuk mengembalikannya ke /dev/null setelah selesai debugging. Pastikan Timezone Server Benar: Jalankan date di terminal SSH untuk memastikan zona waktu server sesuai dengan yang Anda harapkan (misal: WIB/WITA/WIT). Jika tidak, atur di file .env aplikasi Anda: app.timezone = Asia/Jakarta. Dengan mengikuti salah satu dari skenario di atas, sistem otomatisasi Anda sekarang sudah 100% aktif dan akan berjalan mandiri sesuai jadwal yang Anda definisikan di app/Config/Tasks.php.