Magento menyediakan dua skrip cron di direktori root-nya, cron.php dan cron.sh.
Mana yang lebih baik untuk dijalankan dan mengapa?
Akan lebih baik menjalankan cron.sh
Pada Magento EE 1.13.x dan CE 1.8.x, mekanika cron telah berubah di mana Magento telah memperkenalkan fungsi mode penjadwalan baru.
Ada 2 mode yang tersedia: 1. default - menjalankan crons terjadwal. 2. selalu - Seperti namanya tugas-tugas ini akan dijalankan tanpa syarat setiap kali cron dipicu dan tidak perlu jadwal yang ditentukan secara eksplisit.
Pada dasarnya cron.php dipanggil tanpa parameter menggunakan shell_exec untuk menjalankan dua proses cron.sh. Masing-masing dengan parameter yang berbeda ("default" atau "selalu"). Cron.sh pada gilirannya melewati parameter ini kembali ke cron.php yang kemudian mengeksekusi cron. Secara internal Magento menggunakan infrastruktur acara untuk memproses dua mode dengan mengirimkan acara dengan nama "default" dan "selalu". Mage_Cron kemudian mengimplementasikan dua metode pengamat.
Melihat cron.php, Anda akan melihat penggunaan fungsi PHP shell_exec. Selain sebagai masalah keamanan, fungsi ini dapat mengembalikan NULL saat terjadi kesalahan atau program tidak menghasilkan keluaran. Tidak mungkin mendeteksi kegagalan eksekusi menggunakan fungsi ini. Ini berarti bahwa pada titik tertentu ketika skrip / kode Anda gagal karena kesalahan, hal berikut terjadi: 1. Cronjob menjadi basi, 2. Tidak ada kesalahan dicatat, 3. dan tidak ada yang tahu bahwa semua ini telah terjadi.
Untuk mengatasinya, cronjob berikut harus ditambahkan:
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
Ini akan memastikan bahwa mode proses akan selalu berjalan tanpa menggunakan fungsi PHP fallback shell_exec dan bahwa cron seharusnya tidak menjadi basi karena pengecualian dilemparkan jika terjadi kesalahan.
www-data
akan berubah menjadi pengguna apa pun yang menjalankan proses server web. Juga perlu dicatat bahwa untuk banyak pengaturan hosting CPanel / WHM,shell_exec()
akan dinonaktifkan.*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default */5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
dan perintah-perintah ini memberikan kesalahan "command not found" oleh nupur walia*/5 * * * * /bin/sh /path/to/magento/cron.sh cron.php -m=default