O fuso horário do meu sistema é EUA / Leste , minha loja padrão é EUA / Central e o banco de dados é UTC . A que horas será doStuff
chamado o seguinte método?
<mymodule_do_stuff>
<schedule><cron_expr>15 0 * * *</cron_expr></schedule>
<run>
<model>mymodule/observer::doStuff</model>
</run>
</mymodule_do_stuff>
Atualização: eu executei este script.
echo date('r'), PHP_EOL;
require_once 'app/Mage.php';
Mage::app();
echo date('r'), PHP_EOL;
e pegou
Mon, 30 Dec 2013 18:01:33 -0600
Tue, 31 Dec 2013 00:01:34 +0000
Parece que o UTC é o que devo usar.
configuration
cron
timezone
nachito
fonte
fonte
Respostas:
O tempo padrão usado será o horário do sistema do linux. Use a
date
função na linha de comando para descobrir o que está definido.O Magento 'sobrescreve' isso configurando o
locale
para o que você especificou durante a instalação da loja. Isso é especificado noSystem > Configuration > General
por loja ou no escopo padrão.fonte
date_default_timezone_set('UTC')
emMage::isInstalled()
que é chamado em cron.php. Onde está olocale
conjunto para a loja padrão?module-cron/Model/Schedule.php
, especificamente pelotrySchedule()
método, verá onde ocorre a conversão do UTC para o fuso horário definido na configuração (incluindo um comentário indicandowe assume that all schedules in configuration (crontab.xml and DB tables) are in admin store timezone
)Os horários armazenados na
cron_schedule
tabela estão no UTC, mas o Magento o converte no fuso horário configurado da sua loja (general/locale/timezone
) ao verificar se um trabalho deve ser executado.Eu recomendo instalar o Aoe_Scheduler para ter uma idéia melhor de quando os trabalhos cron da sua loja estão sendo executados.
fonte
Olhando o código na função:
O horário agendado é baseado na hora da função PHP (), isso usa o fuso horário configurado para PHP (dependendo da sua configuração específica), mas eu diria que isso está configurado exatamente como o fuso horário do sistema (EUA / Leste).
Não foi possível encontrar um local em que haja um cálculo para o deslocamento de fuso horário usado.
fonte
Abra o arquivo
Mage_Cron_Model_Observer
e coloque um Mage :: log () logo após ou antes da$now = time();
linhaEntão, se você verificar
var/log/system.log
poderá saber exatamente qual fuso horário foi usado pelo Magento.fonte
Eles são acionados por sua configuração de localidade no Magento para o seu fuso horário com a data / hora armazenada como UTC no banco de dados.
O fuso horário do sistema em que o Magento está sendo executado pode ser separado da configuração do Magento.
Tudo isso é por observação. Meu servidor executa o MST, Magento é PST, o que significa que, durante parte do ano, os trabalhos cron externos divergem dos trabalhos cron do Magento em 1 hora, devido a um deles observar o horário de verão.
Se você deseja confirmação, instale o módulo AOE Scheduler e poderá lê-lo na passagem do mouse. Atualmente, a AOE está exibindo 16:30 PST, que é 16:30 PST.
fonte