Magento cron işleri hangi saat diliminde yürütülüyor?


11

Sistemimin saat dilimi ABD / Doğu , varsayılan mağazam ABD / Merkez ve veritabanı UTC . Aşağıdaki doStuffyöntem ne zaman çağrılır?

<mymodule_do_stuff>
    <schedule><cron_expr>15 0 * * *</cron_expr></schedule>
    <run>
        <model>mymodule/observer::doStuff</model>
    </run>
</mymodule_do_stuff>

Güncelleme: Bu senaryoyu çalıştırdım.

echo date('r'), PHP_EOL;
require_once 'app/Mage.php';
Mage::app();

echo date('r'), PHP_EOL;

ve var

Mon, 30 Dec 2013 18:01:33 -0600
Tue, 31 Dec 2013 00:01:34 +0000

Görünüşe göre UTC kullanmam gerekiyor.


Veritabanında UTC olarak depolanan tarih / saat ile saat diliminiz için yapılandırma ayarınız.
Fiasco Labs

Yanıtlar:


9

Kullanılan varsayılan zaman linux sistem zamanı olacaktır. dateNeye ayarlandığını bulmak için komut satırındaki işlevi kullanın .

Magento locale, mağazanın kurulumu sırasında belirttiğiniz herhangi bir şeye ayarlayarak 'üzerine yazar' . Bu, System > Configuration > Generalmağaza başına veya varsayılan kapsamda belirtilir.


Bunun doğru olduğunu düşünmüyorum. Magento çağrılar date_default_timezone_set('UTC')içinde Mage::isInstalled()hangi cron.php içinde denir. localeVarsayılan mağazaya nerede ayarlanır?
nachito

3
varsayılan olarak UTC'dir, ancak bildiğim kadarıyla, bir mağazayı varsayılan kapsamı da başlatırken, sys / config'te ayarlanan yerel ayarı kullanır. Yanılıyorsam lütfen beni düzeltin ama kapsam 0 bile tanımlanmış yerel ayarları kullanıyor
Sander Mangel

Evet, bu M2 için doğrudur - module-cron/Model/Schedule.phpözellikle trySchedule()yöntem altında bakarsanız , yapılandırmada ayarlanan UTC'den saat dilimine dönüşümün nerede gerçekleştiğini görürsünüz (yorum belirtme dahil we assume that all schedules in configuration (crontab.xml and DB tables) are in admin store timezone)
Phil Birnie

3

cron_scheduleTabloda depolanan süreler UTC'dir, ancak Magento general/locale/timezonebir işin çalışıp çalışmadığını kontrol ederken bunu mağazanızın yapılandırılmış saat dilimine ( ) dönüştürür .

Mağazanızın cron işlerinin ne zaman yürütüldüğüne dair daha iyi bir fikir edinmek için Aoe_Scheduler'ı yüklemenizi öneririz .


1

İşlevdeki koda bakarak:

Mage_Cron_Model_Observer::_generateJobs

Planlanan zaman PHP fonksiyon zamanına () dayanmaktadır, bu PHP için yapılandırılmış zaman dilimini kullanır (sizin özel yapılandırmaya bağlı olarak) ama bunun sadece sistem zaman dilimi (ABD / Doğu) gibi yapılandırıldığını söyleyebilirim.

Kullanılan saat dilimi ofseti için hesaplama yapılan bir yer bulamadım.


Bunun doğru olduğunu düşünmüyorum. Güncellememi görün
nachito

0

Dosyayı açın ve satırdan Mage_Cron_Model_Observerhemen sonra veya hemen önce bir Mage :: log () koyun
$now = time();

public function dispatch($observer)
    {
        $schedules = $this->getPendingSchedules();
        $scheduleLifetime = Mage::getStoreConfig(self::XML_PATH_SCHEDULE_LIFETIME) * 60;
        $now = time();
        Mage::log("cron timezone: " . date_default_timezone_get(), Zend_Log::DEBUG); // this will log the cron timezone into var/log/system.log file
        $jobsRoot = Mage::getConfig()->getNode('crontab/jobs');
        $defaultJobsRoot = Mage::getConfig()->getNode('default/crontab/jobs');
 . . . . .
}

Daha sonra kontrol var/log/system.logederseniz Magento tarafından hangi saat diliminin kullanıldığını tam olarak öğrenebilirsiniz.


Ardından, cron günlük tablosunda veya başka bir yerde saklanan tarihleri ​​dönüştürmek için UTC ofsetini ekleyin / çıkarın.
Fiasco Labs

0

Veritabanında UTC olarak depolanan tarih / saat ile Magento'daki Yerel Ayarlar ayarınıza göre tetiklenirler.

Magento'nun üzerinde çalıştığı sistem saat dilimi, Magento'nun yapılandırma ayarından ayrı olabilir.

Bunların hepsi gözlem yoluyla. Sunucum MST çalıştırıyor, Magento PST.

Onaylamak istiyorsanız, AOE Zamanlayıcı modülünü kurun ve fareyle üzerine gelindiğinde okuyabilirsiniz. AOE şu anda 16:30 PST olan 16:30 PST olduğunu gösteriyor.

Runtime: 2013-12-30   Server: 17:44:59 MST   Store: 16:44:59   Zulu: 00:44:59 UTC
Note: All logged times are UTC, your server timezone offset is -07:00 hours from UTC
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.