Bekerja dengan pekerjaan cron secara manual adalah yang paling umum dengan volume pekerjaan cron yang rendah. Tetapi bagaimana jika Anda bekerja dengan volume pekerjaan cron yang tinggi? PHP adalah jawabannya! Mengapa PHP? Hanya karena dapat mengotomatiskan tugas yang diperlukan untuk menambah, menghapus, dan membuat daftar tugas cron.
Bukan pembaca? Tonton tutorial video terkait ini! Tidak melihat videonya? Pastikan pemblokir iklan Anda dinonaktifkan.Dalam tutorial ini, Anda akan mempelajari bagaimana PHP dapat menghemat waktu dengan mengotomatiskan penambahan, penghapusan, dan daftar cron job untuk sistem Linux.
Siap? Langsung masuk!
Prasyarat
Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut:
- Crontab – Crontab biasanya diinstal pada sistem operasi Linux secara default.
- Kebanyakan distribusi Linux menggunakan sistem cron yang sama. Contohnya ditampilkan di sini di macOS menggunakan sistem dasar berbasis BSD.
Membuat File Crontab
Sebelum Anda dapat mengelola pekerjaan cron, Anda memerlukan file terlebih dahulu untuk menyimpan pekerjaan cron tersebut. Semua tugas cron disimpan dalam satu file crontab seluruh sistem.
Buka terminal Anda dan jalankan perintah di bawah ini untuk mengubah direktori menjadi /usr/local
dan buat subdirektori (jobs
dan scripts
). Anda dapat memberi nama direktori ini secara berbeda sesuai keinginan Anda. Direktori ini akan menyimpan file dan skrip cron job Anda nanti.
cd /usr/local && sudo mkdir jobs scripts
Sekarang jalankan perintah di bawah ini untuk membuat file crontab (crontab -e
). File crontab dibuat secara otomatis di dalam ~/tmp . Anda direktori saat pertama kali Anda memanggil crontab
perintah.
# Sets default text editor to nano
export EDITOR='nano'
# Initializes the crontab file and opens it in nano
crontab -e
Menambahkan Tugas Cron Tunggal
Sekarang setelah Anda membuat file crontab, Anda dapat mulai mengelola pekerjaan cron Anda. Tetapi pertama-tama Anda harus fokus untuk menambahkannya melalui PHP. Bagaimana? Anda akan membuat dan menjalankan skrip PHP untuk menambahkan tugas cron.
Pekerjaan Cron dijadwalkan dengan lima parameter, seperti yang ditunjukkan di bawah ini. Setiap parameter memiliki nilai default *, yang menunjukkan bahwa tidak ada nilai yang ditentukan untuk parameter tersebut, baik untuk tugas cron per jam, harian, mingguan, atau bulanan.
Jika Anda memerlukan penyegaran pada sintaks cron job dengan contoh, lihat situs web crontab.
1. Buat file di editor teks Anda, salin/tempel kode di bawah ini dan simpan di /usr/local/jobs direktori. Untuk contoh ini, file tersebut bernama newjob.py , tetapi Anda dapat menamainya secara berbeda. Kode di bawah ini mencetak teks (Executed!
) saat dieksekusi.
print("Executed!")
2. Selanjutnya buat file script PHP, lalu copy/paste kode di bawah ini ke file PHP tersebut, dan simpan di /usr/local/scripts . Untuk tutorial ini, scriptnya bernama add.php .
Sepanjang tutorial, ingatlah untuk menyimpan file skrip di direktori /usr/local/scripts dan file cron job di direktori /usr/local/jobs.
Kode di bawah ini menambahkan newjob.py file sebagai tugas cron di file crontab.
shell_exec
operasi menyimpan daftar tugas cron ke string dalam memori sebelum menambahkan yang baru, sehingga Anda tidak akan kehilangan tugas cron yang ada.
Apakah
shell_exec
tidak bekerja? Anda mungkin menonaktifkan fungsi ini di file php.ini Anda. Caridisable_functions
konfigurasi di php.ini Anda dan hapusshell_exec
dari daftar. Ingatlah bahwa ini dapat disalahgunakan, jadi berhati-hatilah dengan fungsi ini!
3. Jalankan perintah di bawah ini untuk menjalankan add.php
skrip dari /usr/local/scripts direktori. php add.php
php add.php
Pastikan Anda berada di direktori /usr/local/scripts saat menjalankan skrip di seluruh tutorial.
4. Terakhir, jalankan crontab -l
di bawah ini perintah untuk memeriksa apakah pekerjaan cron baru ada.
crontab -l
Mencantumkan Pekerjaan Cron
Mungkin Anda ingin melacak pekerjaan cron yang telah Anda tambahkan, sehingga Anda dapat memperbarui atau menghapusnya. Jika demikian, langkah pertama Anda adalah membuat daftar pekerjaan cron yang ada. Mencantumkan tugas cron berguna untuk melacak tugas cron yang Anda miliki.
Buat skrip PHP baru, beri nama unik, dan tempel kode di bawah ini ke file skrip. Untuk contoh ini, skrip diberi nama list.php .
Kode di bawah ini shell_exec
operasi mengumpulkan dan menampilkan (echo()
) semua tugas cron (crontab -l
) dari file crontab.
Sekarang, jalankan perintah di bawah ini untuk menjalankan list.php naskah.
php list.php
Mendaftarkan Array Pekerjaan Cron
Mungkin Anda ingin mencetak daftar pekerjaan cron dalam array alih-alih daftar biasa. Jika demikian, Anda memerlukan ) and [var_dump()](
fungsi. Fungsi-fungsi ini memungkinkan Anda menyimpan tugas cron di dalam file crontab sebagai elemen di dalam larik.
Ganti konten list.php file dengan kode di bawah ini. Menjalankan kode di bawah ini mencantumkan larik tugas cron, dan juga mencetak panjang string tugas cron.
Sekarang jalankan perintah di bawah ini untuk menjalankan list.php
naskah.
php list.php
Seperti yang Anda lihat di bawah, kode menampilkan daftar tugas cron dalam larik, sekaligus menampilkan panjang string.
Menghapus Tugas Cron
Sekarang setelah Anda memiliki daftar pekerjaan cron yang ada, Anda dapat memutuskan apa yang ingin Anda lakukan dengan setiap pekerjaan cron. Mungkin Anda memiliki tugas cron yang ingin Anda hapus. Jika demikian, Anda akan menentukan tugas cron yang akan dihapus dalam variabel string.
1. Buat skrip PHP baru bernama remove.php untuk contoh ini, kemudian tambahkan kode di bawah ini ke skrip. Anda dapat memberi nama file skrip secara berbeda sesuai keinginan.
Kode di bawah ini menghapus tugas cron tertentu dari file crontab.
2. Jalankan perintah berikut untuk menjalankan remove.php
naskah.
php remove.php
3. Terakhir, jalankan crontab -l
perintah untuk melihat apakah Anda telah menghapus newjob.php
tugas cron. crontab -l
crontab -l
Menambahkan dan Menghapus Beberapa Pekerjaan Cron
Dari menambahkan satu tugas cron, Anda juga dapat menambahkan beberapa tugas cron, mungkin saat Anda memiliki tugas harian yang ingin Anda otomatisasi. Bagaimana? Dengan menambahkan for loop dalam skrip Anda.
Menambahkan dan menghapus beberapa tugas cron memiliki pendekatan yang serupa, tetapi skrip untuk menghapus beberapa tugas cron memiliki lebih banyak penggunaan variabel, seperti yang ditunjukkan di bawah ini.
1. Ganti konten add.php . Anda file dengan kode di bawah ini. Menjalankan kode di bawah ini menambahkan beberapa pekerjaan cron ke file crontab dengan mengayuh melalui array.
2. Selanjutnya, jalankan kembali perintah di bawah ini untuk menjalankan add.php
naskah. php add.php
php add.php
3. Jalankan crontab -l
di bawah ini perintah untuk memverifikasi apakah pekerjaan cron yang Anda tambahkan di file crontab ada. crontab -l
crontab -l
4. Sekarang, ganti konten remove.php Anda file dengan kode di bawah ini, yang menghapus beberapa pekerjaan cron yang Anda tetapkan. Mirip dengan menambahkan beberapa pekerjaan cron, pendekatan yang sama berlaku dalam menghapus beberapa pekerjaan cron, tetapi dengan variabel tambahan.
5. Jalankan perintah berikut untuk menjalankan remove.php
naskah.
php remove.php
6. Terakhir, jalankan crontab -l
perintah untuk memverifikasi bahwa Anda telah menghapus tugas cron.
crontab -l
Jika Anda telah berhasil menghapus tugas cron, Anda tidak akan mendapatkan output seperti di bawah ini.
Membuat Fungsi untuk Mengelola Pekerjaan Cron
Sejauh ini Anda telah melihat bagaimana menambahkan, menghapus, dan membuat daftar tugas cron dalam skrip terpisah. Namun untuk mengelola tugas cron secara efektif, Anda dapat membuat fungsi dalam satu skrip alih-alih menjalankan tiga skrip terpisah.
Buat file skrip baru dan rekatkan kode di bawah ini. Beri nama skrip yang Anda inginkan, tetapi untuk contoh ini, skrip tersebut diberi nama multi.php .
Kode di bawah ini menambahkan, menghapus, dan mencantumkan tugas cron dengan tiga fungsi terpisah yang dapat Anda panggil di bagian bawah skrip.
Sekarang, jalankan perintah di bawah ini untuk menjalankan multi.php
naskah.
php multi.php
Di bawah ini, Anda dapat melihat output dari list_jobs()
fungsi yang dipanggil di multi.php naskah.
Mencegah Kelebihan Memori
Anda telah melihat kemampuan PHP dalam mengelola pekerjaan cron, tetapi memiliki terlalu banyak pekerjaan cron menghabiskan memori. Bagaimana cara menghindari kelebihan memori? Tetapkan batas hitungan untuk berapa banyak tugas cron yang dapat Anda tambahkan ke file crontab.
1. Tambahkan fungsi berikut ke multi.php naskah. Fungsi di bawah ini menghitung semua tugas cron dengan menghitung semua baris di dalam file crontab dan mencetak pesan untuk memberi tahu Anda tentang jumlah tugas cron saat ini.
function count_jobs(){
$jobs = shell_exec("crontab -l");
# Counts all cron jobs from the crontab file and prints the result
echo("You currently have ".substr_count( $jobs, "\n")." cron jobs");
}
2. Selanjutnya, panggil count_jobs()
fungsi di akhir skrip, seperti yang Anda lakukan di bagian “Membuat Fungsi untuk Mengelola Pekerjaan Cron”.
3. Jalankan perintah di bawah ini untuk menjalankan multi.php
naskah.
php multi.php
Seperti yang Anda lihat di bawah, ada pesan yang memberi tahu Anda jumlah pekerjaan cron saat ini.
Tetapi mungkin Anda ingin menghentikan skrip secara otomatis jika ada terlalu banyak tugas cron yang berjalan secara bersamaan. Jika demikian, tambahkan if
kondisi akan berhasil.
4. Ganti count_jobs()
fungsi di multi.php file dengan yang di bawah ini.
Fungsi di bawah ini membaca jumlah baris di dalam file crontab, dan berdasarkan angka itu, memutuskan apakah akan menghentikan skrip atau tidak.
function count_jobs(){
$jobs = shell_exec("crontab -l");
# Counts all cron jobs from the crontab file and prints the result
echo("You currently have ".substr_count( $jobs, "\n")." cron jobs\n");
# Checks whether the cron jobs count is over 50 or not
if(substr_count( $jobs, "\n") > 50){
# Prints a message and terminates the script
exit("Too many cron jobs, cannot add any more!");
}
}
5. Terakhir, jalankan multi.php
skrip seperti yang Anda lakukan pada langkah ketiga. php multi.php
php multi.php
Pada output di bawah, Anda dapat melihat pesan yang memberi tahu Anda jumlah tugas cron saat ini (63 ). Karena jumlah tugas cron lebih dari 50, skrip kemudian berhenti secara otomatis dan tidak melanjutkan penambahan tugas cron.
Kesimpulan
Sepanjang tutorial ini, Anda telah menyadari bahwa PHP menyediakan cara untuk mengotomatisasi pekerjaan cron dengan shell_exec()
fungsi. Anda telah mempelajari cara menambahkan, menghapus, dan mencantumkan tugas cron dalam satu skrip PHP sambil memastikan Anda tidak membebani memori Anda.
Sekarang, apakah Anda akan mempertimbangkan PHP saat berikutnya Anda perlu mengelola pekerjaan cron untuk proyek Anda?