Múi giờ Magento cron đang được chạy trong múi giờ nào?


11

Múi giờ của hệ thống của tôi là US / East , cửa hàng mặc định của tôi là US / Central và cơ sở dữ liệu là UTC . Tại thời điểm nào doStuffphương pháp sau đây sẽ được gọi?

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

Cập nhật: Tôi đã chạy tập lệnh này.

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

echo date('r'), PHP_EOL;

và có

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

Vì vậy, có vẻ như UTC là những gì tôi nên sử dụng.


Cài đặt cấu hình cho múi giờ của bạn với ngày / giờ được lưu dưới dạng UTC trong cơ sở dữ liệu.
Phòng thí nghiệm Fiasco

Câu trả lời:


9

Thời gian mặc định được sử dụng sẽ là thời gian hệ thống của linux. Sử dụng datechức năng trên dòng lệnh để tìm hiểu xem nó được đặt thành gì.

Magento 'ghi đè' bằng cách đặt localethành bất cứ thứ gì bạn đã chỉ định trong quá trình cài đặt cửa hàng. Điều này được chỉ định trong System > Configuration > Generalmỗi cửa hàng hoặc trên phạm vi mặc định.


Tôi không nghĩ rằng điều này là đúng. Cuộc gọi Magento date_default_timezone_set('UTC')trong Mage::isInstalled()đó được gọi là trong cron.php. Đâu là localethiết lập cho cửa hàng mặc định?
nachito

3
theo mặc định, đó là UTC, nhưng theo tôi biết, khi khởi tạo một cửa hàng cũng có phạm vi mặc định, sử dụng ngôn ngữ được đặt trong sys / config. Vui lòng sửa cho tôi nếu tôi sai nhưng ngay cả cửa hàng phạm vi 0 cũng sử dụng cài đặt ngôn ngữ được xác định
Sander Mangel

Đúng, điều này đúng với M2 - nếu bạn xem module-cron/Model/Schedule.php, cụ thể theo trySchedule()phương pháp, bạn sẽ thấy việc chuyển đổi từ UTC sang múi giờ được đặt trong cấu hình diễn ra (bao gồm cả nhận xét we assume that all schedules in configuration (crontab.xml and DB tables) are in admin store timezone)
Phil Birnie

3

Thời gian được lưu trữ trong cron_schedulebảng là bằng UTC, nhưng Magento chuyển đổi nó thành múi giờ được định cấu hình của cửa hàng của bạn ( general/locale/timezone) khi kiểm tra xem có nên chạy công việc không.

Tôi khuyên bạn nên cài đặt Aoe_Scheduler để có ý tưởng tốt hơn khi công việc định kỳ của cửa hàng của bạn đang được chạy.


1

Nhìn vào mã trong hàm:

Mage_Cron_Model_Observer::_generateJobs

Thời gian dự kiến ​​dựa trên thời gian chức năng PHP (), thời gian này sử dụng múi giờ được định cấu hình cho PHP (tùy thuộc vào cấu hình cụ thể của bạn) Tôi sẽ nói rằng điều này được cấu hình giống như múi giờ hệ thống (US / East).

Tôi không thể tìm thấy một nơi có tính toán cho phần bù múi giờ đã sử dụng.


Tôi không nghĩ rằng điều này là đúng. Xem cập nhật của tôi
nachito 31/12/13

0

Mở tệp Mage_Cron_Model_Observervà đặt một Mage :: log () ngay sau hoặc trước
$now = time();dòng

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');
 . . . . .
}

Sau đó, nếu bạn kiểm tra, var/log/system.logbạn có thể biết chính xác múi giờ nào đã được Magento sử dụng.


Và sau đó thêm / trừ phần bù UTC để chuyển đổi bất kỳ ngày nào được lưu trữ trong bảng nhật ký cron hoặc ở nơi khác.
Phòng thí nghiệm Fiasco

0

Chúng kích hoạt theo cài đặt cấu hình Địa điểm của bạn trong Magento cho múi giờ của bạn với ngày / giờ được lưu dưới dạng UTC trong cơ sở dữ liệu.

Múi giờ hệ thống mà Magento đang chạy có thể tách biệt với cài đặt cấu hình của Magento.

Đây là tất cả bằng cách quan sát. Máy chủ của tôi chạy MST, Magento là PST, có nghĩa là trong một phần của năm, các công việc định kỳ bên ngoài tách khỏi các công việc định kỳ của Magento trong 1 giờ do một trong số họ quan sát DST.

Nếu bạn muốn xác nhận, hãy cài đặt mô-đun Lập lịch AOE và bạn có thể đọc nó ra khỏi di chuột. Hiện tại AOE đang hiển thị 16:30 PST, tức là 4:30 PM PST.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.