La zona horaria de mi sistema es US / Eastern , mi tienda predeterminada es US / Central y la base de datos es UTC . ¿A qué hora se llamará el siguiente doStuff
método?
<mymodule_do_stuff>
<schedule><cron_expr>15 0 * * *</cron_expr></schedule>
<run>
<model>mymodule/observer::doStuff</model>
</run>
</mymodule_do_stuff>
Actualización: ejecuté este script.
echo date('r'), PHP_EOL;
require_once 'app/Mage.php';
Mage::app();
echo date('r'), PHP_EOL;
y consiguió
Mon, 30 Dec 2013 18:01:33 -0600
Tue, 31 Dec 2013 00:01:34 +0000
Entonces parece que UTC es lo que debería estar usando.
configuration
cron
timezone
nachito
fuente
fuente
Respuestas:
El tiempo predeterminado utilizado será el tiempo del sistema de Linux. Use la
date
función en la línea de comando para averiguar en qué está configurado.Magento "sobrescribe" eso al configurar
locale
lo que haya especificado durante la instalación de la tienda. Esto se especifica en elSystem > Configuration > General
por tienda o en el ámbito predeterminado.fuente
date_default_timezone_set('UTC')
en lasMage::isInstalled()
que se llama en cron.php. ¿Dónde está ellocale
conjunto de la tienda predeterminada?module-cron/Model/Schedule.php
, específicamente bajo eltrySchedule()
método, verá dónde tiene lugar la conversión de UTC a la zona horaria establecida en la configuración (incluido un comentario que indicawe assume that all schedules in configuration (crontab.xml and DB tables) are in admin store timezone
)Los tiempos almacenados en la
cron_schedule
tabla están en UTC, pero Magento lo convierte a la zona horaria configurada de su tienda (general/locale/timezone
) al verificar si un trabajo debe ejecutarse.Recomiendo instalar Aoe_Scheduler para tener una mejor idea de cuándo se ejecutan los trabajos cron de su tienda.
fuente
Mirando el código en la función:
El tiempo programado se basa en el tiempo de la función PHP (), esto usa la zona horaria configurada para PHP (dependiendo de su configuración específica, pero) Diría que está configurada al igual que la zona horaria del sistema (EE. UU. / Este).
No pude encontrar un lugar donde haya un cálculo para el desplazamiento de la zona horaria utilizada.
fuente
Abra el archivo
Mage_Cron_Model_Observer
y coloque un Mage :: log () justo después o antes de la$now = time();
líneaLuego, si marca
var/log/system.log
, puede saber exactamente qué zona horaria ha utilizado Magento.fuente
Se activan según su configuración de configuración regional en Magento para su zona horaria con fecha / hora almacenada como UTC en la base de datos.
La zona horaria del sistema en la que se ejecuta Magento puede estar separada de la configuración de configuración de Magento.
Todo esto es por observación. Mi servidor ejecuta MST, Magento es PST, lo que significa que durante parte del año, los trabajos cron externos divergen de los trabajos cron de Magento en 1 hora debido a que uno de ellos observa DST.
Si desea confirmación, instale el módulo AOE Scheduler y podrá leerlo desde el mouseover. Actualmente, AOE muestra las 16:30 PST que son las 4:30 PM PST.
fuente