Criando uma Crontab no Magento

Olá galera!

Estes dias precisei criar um módulo para conexão com o SFTP da EmailVision para sincronização de dados entre o sistema da EmailVision e o Magento. Desenvolvi um módulo para fazer esta integração e tive a necessidade de criar Crontabs para que a sincronização ocorra pela madrugada e não impacte na performance da loja durante o período de maior movimentação.

Segue abaixo dois métodos do meu módulo que postarei aqui como exemplo:

/**
 * Start new push file process to SFTP
 *
 * @return Shoes_EmailVision_Model_Datasync_Process
 */
public function startNewPushProcess()
{
 if(!$this->isActive()) {
 if($this->isLoggedIn()) {
 $this->_redirect('emailvision/adminhtml_reports/index');
 }
 return;
 }

 ...
}

/**
 * Start new pull file process from SFTP
 *
 * @return Shoes_EmailVision_Model_Datasync_Process
 */
public function startNewPullProcess()
{
 if(!$this->isActive()) {
 if($this->isLoggedIn()) {
 $this->_redirect('emailvision/adminhtml_reports/index');
 }
 return;
 }

 ...
}

Este método eu escrevi dentro de um model e já desenvolvi com flexibilidade para poder ser chamado tanto por um controller via admin quanto por uma cron configurada no config.xml.

Pois bem, é muito simples a configuração da crontab no módulo, basta você inserir as seguintes configurações no arquivo config.xmldo seu módulo:

<crontab>
 <jobs>
 <emailvision_datasync_sftp_push_file>
 <schedule>
 <cron_expr>0 0 * * *</cron_expr>
 </schedule>
 <run>
 <model>emailvision/datasync_process::startNewPushProcess</model>
 </run>
 </emailvision_datasync_sftp_push_file>
 <emailvision_datasync_sftp_pull_files>
 <schedule>
 <cron_expr>0 6 * * *</cron_expr>
 </schedule>
 <run>
 <model>emailvision/datasync_process::startNewPullProcess</model>
 </run>
 </emailvision_datasync_sftp_pull_files>
 </jobs>
</crontab>

Nas configs acima as tags <emailvision_datasync_sftp_push_file> e <emailvision_datasync_sftp_pull_files> podem conter quaisquer nomes desde que sejam únicos, nas tags <cron_expr> devem conter as expressões de agendamento da cron e as tags <model> devem conter o método que deve ser disparado quando a cron for executada no seguinte formato: módulo/caminho_para_model::método.

Parabéns! Sua cron está configurada para o seu módulo e, caso a cron do seu servidor esteja corretamente configurada para sua loja, o Magento cuidará do agendamento de todas as crontabs dos módulos instalados.

Até a próxima!

2014-08-29T14:33:18+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x