Le fuseau horaire de mon système est US / Eastern , mon magasin par défaut est US / Central et la base de données est UTC . À quelle heure la doStuff
méthode suivante sera-t-elle appelée?
<mymodule_do_stuff>
<schedule><cron_expr>15 0 * * *</cron_expr></schedule>
<run>
<model>mymodule/observer::doStuff</model>
</run>
</mymodule_do_stuff>
Mise à jour: j'ai exécuté ce script.
echo date('r'), PHP_EOL;
require_once 'app/Mage.php';
Mage::app();
echo date('r'), PHP_EOL;
et j'ai
Mon, 30 Dec 2013 18:01:33 -0600
Tue, 31 Dec 2013 00:01:34 +0000
Il semble donc que l'UTC soit ce que je devrais utiliser.
configuration
cron
timezone
nachito
la source
la source
Réponses:
L'heure par défaut utilisée sera l'heure système de Linux. Utilisez la
date
fonction sur la ligne de commande pour savoir à quoi elle est définie.Magento 'écrase' cela en définissant le
locale
sur ce que vous avez spécifié lors de l'installation de la boutique. Ceci est spécifié dans leSystem > Configuration > General
par magasin ou sur la portée par défaut.la source
date_default_timezone_set('UTC')
dansMage::isInstalled()
lesquels est appelé dans cron.php. Où est l'locale
ensemble du magasin par défaut?module-cron/Model/Schedule.php
, en particulier sous latrySchedule()
méthode, vous verrez où la conversion d'UTC en fuseau horaire défini dans la configuration a lieu (y compris un commentaire indiquantwe assume that all schedules in configuration (crontab.xml and DB tables) are in admin store timezone
)Les
cron_schedule
heures stockées dans le tableau sont en UTC, mais Magento le convertit en fuseau horaire configuré de votre magasin (general/locale/timezone
) lors de la vérification si un travail doit s'exécuter.Je recommande d'installer Aoe_Scheduler pour avoir une meilleure idée du moment où les tâches cron de votre magasin sont exécutées.
la source
En regardant le code dans la fonction:
L'heure planifiée est basée sur l'heure de la fonction PHP (), cela utilise le fuseau horaire configuré pour PHP (en fonction de votre configuration spécifique mais je dirais que cela est configuré comme le fuseau horaire du système (US / Eastern).
Je n'ai pas pu trouver un endroit où il y a un calcul pour le décalage de fuseau horaire utilisé.
la source
Ouvrez le fichier
Mage_Cron_Model_Observer
et placez un Mage :: log () juste après ou avant la$now = time();
ligneEnsuite, si vous cochez,
var/log/system.log
vous pouvez savoir exactement quel fuseau horaire a été utilisé par Magento.la source
Ils se déclenchent par votre paramètre de configuration locale dans Magento pour votre fuseau horaire avec la date / heure stockée en UTC dans la base de données.
Le fuseau horaire du système sur lequel Magento s'exécute peut être distinct du paramètre de configuration de Magento.
Tout cela par observation. Mon serveur exécute MST, Magento est PST, ce qui signifie que pendant une partie de l'année, les tâches cron externes s'écartent des tâches cron de Magento d'une heure en raison de l'observation de l'heure d'été par l'un d'entre eux.
Si vous voulez une confirmation, installez le module AOE Scheduler et vous pouvez le lire à la souris. Actuellement, AOE affiche 16h30 PST qui est 16h30 PST.
la source