Hangi cron betiği çalıştırmak en iyisidir? cron.php veya cron.sh


27

Magento, kök dizininde cron.php ve cron.sh adında iki cron komut dosyası sağlar.

Hangisi daha iyi kaçacak ve neden?

Yanıtlar:


31

Cron.sh dosyasını çalıştırmak en iyisidir

Magento EE 1.13.x ve CE 1.8.x'ten itibaren, cron mekaniği, Magento'nun yeni bir programlama modu işlevi tanıttığı yerde değişti.

Kullanılabilir 2 mod vardır: 1. varsayılan - zamanlanmış kronları çalıştırır. 2. Her zaman - Adında da belirtildiği gibi, bu görevler koşulsuz olarak cron her tetiklendiğinde gerçekleştirilecek ve açıkça tanımlanmış bir programlamaya gerek duyulmayacak.

Temel olarak herhangi bir parametre olmadan çağrılan cron.php, cron.sh'ın iki işlemini yürütmek için shell_exec öğesini kullanır. Her biri farklı bir parametreye sahip (“varsayılan” veya “her zaman”). Cron.sh bu parametreyi cron.php'ye geri döndürür ve cronu çalıştırır. Dahili olarak Magento, etkinlik altyapısını “varsayılan” ve “her zaman” adlarıyla olayları göndererek iki modu işlemek için kullanır. Mage_Cron daha sonra iki gözlemci yöntemi uygular.

Cron.php dosyasına baktığımızda, shell_exec PHP işlevinin kullanıldığını fark edeceksiniz. Güvenlik kaygısı olmasının yanı sıra, bir hata oluştuğunda veya program çıktı üretmediğinde işlev NULL değerini döndürür. Bu işlevi kullanarak yürütme hatalarını tespit etmek mümkün değildir. Bu, kodunuz / kodunuz bir hata nedeniyle başarısız olduğunda herhangi bir noktada aşağıdakilerin gerçekleştiği anlamına gelir: 1. Cronjob eskimiş olur, 2. Hata kaydedilmez, 3. ve hiç kimse bunun meydana geldiğini bilmiyor.

Bunun üstesinden gelmek için aşağıdaki cronjob'ın eklenmesi gerekir:

*/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

Bu, işlem modlarının her zaman geri dönüş PHP işlevini kullanmadan çalışmasını sağlayacaktır shell_exec ve bir hata meydana gelirse, bir istisna atıldığında cron'un bayatlanmaması gerekir.


Sadece yukarıdaki örnek cron ifadesinin oldukça genel olduğunu ekleyeceğim. www-datakullanıcının web sunucusu işlemlerini gerçekleştirdiği her şeye göre değişir. Ayrıca birçok CPanel / WHM barındırma kurulumu shell_exec()için devre dışı bırakılacağına dikkat çekiyor .
pspahn

*/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=alwaysve bu komutlar nupur walia tarafından "komut bulunamadı" hatası veriyor
Amit Bera

Bu hatayı alırsanız, 3 şeyi kontrol etmeniz gerekir: 1) www-data, bu işlemi çalıştırabilecek sunucudaki doğru kullanıcıdır, aksi halde, kullanıcının ne olduğu ile değiştirin. 2) sh konumunu kontrol edin, bu nedenle "hangi sh" komutunu çalıştırın ve konumu çıkarmalı, bu farklı bir yolsa "/ bin / sh" komutunun yerini alacak. 3) nihayet cron.sh yolunun doğru olduğunu kontrol edin.
Shaughn

@AmitBera Aynı hata mesajını alıyordum ve www-data, root veya başka bir kullanıcıyla çalışamadı. Aslında sadece kullanıcı ihmal ve şimdi çalışıyor, bu yüzden*/5 * * * * /bin/sh /path/to/magento/cron.sh cron.php -m=default
Michael

@Shaughn varsayılan ve her zaman modun kullanımının ne olduğunu açıklayabilir misiniz?
Rohan Hapani
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.