我正在制作一个prestashop模块,我需要在每20分钟后运行一次cron作业。我没有找到任何钩子。我发现的只是“Cron任务管理器”模块,但我不想使用模块。
答案 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);
}