Zona waktu sistem saya adalah AS / Timur , toko default saya adalah AS / Pusat dan basis datanya adalah UTC . Pada jam berapa doStuff
metode berikut ini akan dipanggil?
<mymodule_do_stuff>
<schedule><cron_expr>15 0 * * *</cron_expr></schedule>
<run>
<model>mymodule/observer::doStuff</model>
</run>
</mymodule_do_stuff>
Pembaruan: Saya menjalankan skrip ini.
echo date('r'), PHP_EOL;
require_once 'app/Mage.php';
Mage::app();
echo date('r'), PHP_EOL;
dan mendapatkan
Mon, 30 Dec 2013 18:01:33 -0600
Tue, 31 Dec 2013 00:01:34 +0000
Jadi sepertinya UTC adalah yang seharusnya saya gunakan.
configuration
cron
timezone
nachito
sumber
sumber
Jawaban:
Waktu default yang digunakan adalah waktu sistem linux. Gunakan
date
fungsi pada baris perintah untuk mencari tahu apa itu diatur.Magento 'menimpa' itu dengan mengatur
locale
apa pun yang telah Anda tentukan selama pemasangan toko. Ini ditentukan dalamSystem > Configuration > General
per toko atau pada lingkup default.sumber
date_default_timezone_set('UTC')
diMage::isInstalled()
yang disebut di cron.php. Di manalocale
set ke toko default?module-cron/Model/Schedule.php
, khususnya di bawahtrySchedule()
metode ini, Anda akan melihat di mana konversi dari UTC ke zona waktu yang diatur dalam konfigurasi berlangsung (termasuk komentar yang menyatakanwe assume that all schedules in configuration (crontab.xml and DB tables) are in admin store timezone
)Waktu yang disimpan dalam
cron_schedule
tabel adalah dalam UTC, tetapi Magento mengonversinya ke zona waktu yang dikonfigurasikan toko Anda (general/locale/timezone
) ketika memeriksa apakah suatu pekerjaan harus dijalankan.Saya sarankan menginstal Aoe_Scheduler untuk mendapatkan ide yang lebih baik tentang kapan pekerjaan cron toko Anda dijalankan.
sumber
Melihat kode dalam fungsi:
Waktu yang dijadwalkan didasarkan pada waktu fungsi PHP (), ini menggunakan zona waktu yang dikonfigurasi untuk PHP (tergantung pada konfigurasi spesifik Anda tetapi) Saya akan mengatakan bahwa ini dikonfigurasi seperti zona waktu sistem (AS / Timur).
Saya tidak bisa menemukan tempat di mana ada perhitungan untuk zona waktu yang digunakan.
sumber
Buka file
Mage_Cron_Model_Observer
dan letakkan Mage :: log () tepat setelah atau sebelum$now = time();
barisKemudian jika Anda memeriksa,
var/log/system.log
Anda bisa tahu persis zona waktu mana yang telah digunakan oleh Magento.sumber
Mereka memicu per pengaturan konfigurasi Lokal Anda di Magento untuk zona waktu Anda dengan tanggal / waktu disimpan sebagai UTC dalam database.
Zona waktu sistem yang dijalankan Magento dapat dipisahkan dari pengaturan konfigurasi Magento.
Ini semua dengan observasi. Server saya menjalankan MST, Magento adalah PST yang berarti bahwa untuk sebagian tahun ini, pekerjaan cron eksternal berbeda dari pekerjaan cron Magento selama 1 jam karena salah satu dari mereka mengamati DST.
Jika Anda ingin konfirmasi, instal modul AOE Scheduler dan Anda dapat membacanya dari mouseover. Saat ini AOE menunjukkan 16:30 PST yaitu 16:30 PST.
sumber