≡ Menu

Kode PHP Sederhana Membuat Crontab

PHP Logo

Crontab atau yang lebih sering disebut Cronjob adalah sebuah alat untuk mengeksekusi dari waktu yang ditentukan. Jika diartikel sebelumnya Saya membagikan beberapa website yang membagikan fitur cronjob tanpa membeli server/control panel. Namun sekarang jika kamu memiliki server sendiri, akan Saya permudah untuk membuat cronjob dengan bantuan PHP saja tanpa perlu masuk ke halaman control panel. Mungkin masih banyak yang menggunakan cronjob dari bantuan halaman control panel, tapi jika menggunakan sistem command yang ada di server, dapat lebih mudah membuatnya dan sangatlah aman.

Jika membuat cronjob dari halaman control panel, pastilah memerlukan informasi username dan password. Dan hal tersebut tergolong sangatlah tidak aman karena jika terdapat celah lain dari website itu, maka orang lain dapat melihat username dan password dari control panel dan bisa memasuki server lebih dalam dari yang bisa dibayangkan. Namun jika menggunakan fitur fungsi asli dari server akan aman karena tidak memerlukan username dan password ketika melakukannya, hanya saja cara ini tidak berlaku untuk semua server, contohnya shared hosting yang fiturnya tidak sepenuhnya diberikan kepada setiap pengguna dan memerlukan ijin untuk melakukannya.

Jadi cara ini bisa dijalankan untuk website yang mengaktifkan fitur shell_exec(), exec(), atau system() dan sudah tersedia crontab pada binnary. Jika pengguna Virtual Server pasti sudah bisa mengaktifkan dan menonaktifkan fungsi tersebut sesuka hati, namun untuk pengguna shared hosting, tidak semua admin hosting memberikan fungsi tersebut karena berpengaruh pada keamanan. Silahkan lihat kodenya dibawah ini dan tata caranya ada dibawahnya.

<?php
if($_GET['hapus']){
echo exec('crontab -r');
die();
}
if($_GET['lihat']){
$lihat = exec('crontab -l');
echo $lihat;
}else{
file_put_contents('crontab.txt','*/10 * * * * php /home/USER/public_html/cron.php'.PHP_EOL);
echo exec('crontab crontab.txt');
$output = exec('crontab -l');
echo $output;
unlink('crontab.txt');
}
?>
  1. Pertama-tama silahkan buat file bernama cronjob.php
  2. Lalu salin kode diatas dan tempel pada file cronjob.php yang baru dibuat tadi.
  3. Sekarang silahkan atur berapa waktu yang ingin dieksekusi pada file. Waktu diatas ditandai dari kode bintang, diatas diatur untuk 10 menit. Untuk melihat kode waktu pada cronjob silahkan lihat disini.
  4. Sekarang silahkan buat file bernama cron.php. File ini yang nantinya dieksekusi silahkan buat apapun disana yang berhunbungan dengan eksekusi, misalnya auto delete, publish atau lainnya.
  5. tahap terakhir adalah tampilkan hasil dari crontab.php tadi. Dan jika sudah menampilkan teks Installing new crontab, berarti berhasil.
  6. Untuk melihat proses crontab yang berjalan silahkan menuju URL http://situsmu.com/crontab.php?lihat dan jika ingin menghapusnya silahkan menuju http://situsmu.com/crontab.php?hapus. jangan lupa ganti situsmu.com menjadi alamat situsmu

Kode diatas adalah yang paling sederhana dan untuk crontab.txt adalah pemicu untuk bisa menjalankan/menginstall crontab baru. Kode diatas dapat kamu kembangakan lebih baik lagi supaya dapat digunakan multiple alias tidak hanya satu crontab saja. Dan crontab ini memakan resource yang tinggi memungkinkan tidak bersahabat untuk server rendah. Jadi akan lebih baik menggunkan VPS untuk melakukan crontab dengan cara bersamaan (multiple). 😀

Semoga bermanfaat dan Selamat mencoba

About the author: Apapun yang Saya ketahui dan Saya bagikan. Semuanya berawal dari masa yang disebut pembelajaran.

{ 3 comments… add one }
  • Amin P March 1, 2017, 7:48 am

    Halo mastah, saya mau nanya.
    Bagaiman cara menghapus file di folder tertentu secara otomatis melalui cronjob?

    • rrobyf March 1, 2017, 11:04 am

      Sangat mudah sekali, cukup gunakan fungsi unlink() untuk menghapus file atau folder. Dan untuk menjalankan cronjobnya bisa seperti cara diatas.

  • Anto March 25, 2016, 4:26 am

    Makasih gan tutorial cronnya, saya baru saja coba desktop centos berhasil, saya coba di hosting gagal karena exec dan system didisable.

Leave a Comment