应该使用哪个钩子在prestashop中运行cron作业?

时间:2017-07-04 05:11:16

标签: cron prestashop

我正在制作一个prestashop模块,我需要在每20分钟后运行一次cron作业。我没有找到任何钩子。我发现的只是“Cron任务管理器”模块,但我不想使用模块。

2 个答案:

答案 0 :(得分:2)

Prestashop核心和模块中没有这样的东西,但无论如何,事情可以简单地完成:

  • 在模块构造函数中调用函数,因此每次都会执行

    $this->mySuperCron();
    
  • 然后在执行请求之前存储时间并检查时间:

    private function mySuperCron() {
         $check_time = strtotime('now - 20 minutes');
    
         if ( (int) Configuration::get('MYSUPERMODULETIMER') < (int) $check_time ) {
           // Make your cron here by either calling functions here or do it with file_get_contents / curl or echo an ajax which will be executed in backoffice
           Configuration::updateValue('MYSUPERMODULETIMER', (int) $check_time);
         }
    
    }
    

答案 1 :(得分:0)

马特的例子很好,但由于$check_time总是比Configuration::get('MYSUPERMODULETIMER')高,因此可能无法正常工作。

我这样修复:

$next = strtotime('now + 15 minutes');

if ( (int) Configuration::get('MYSUPERMODULETIMER') < (int) strtotime('now') ) {
    // Make your cron here by either calling functions here or do it with file_get_contents / curl or echo an ajax which will be executed in backoffice
    Configuration::updateValue('MYSUPERMODULETIMER', (int) $next);
}