在我的一个模块中,我想创建两个不同的cron作业来处理两个不同的过程。我所做的就是使用终极Cron模块,并通过实现cron来安排我的cron作业。
我的问题是,在/admin/config/system/cron/作业中,只会出现来自hook_cron的默认值,而不会显示来自hook_cronapi的默认值。这就是我写的。
/**
* Implements hook_cron().
*/
function MODULENAME_cron() {
//code
}
/**
* Implements hook_cronapi().
*/
function MODULENAME_cronapi() {
$items = array();
$items['generate_excel_files'] = array(
'title' => 'Table Excel Generate',
'callback' => 'generate_excel_files_callback',
'scheduler' => array(
'name' => 'crontab',
'crontab' => array(
'rules' => array('0 3 * * *'),
),
),
);
return $items;
}
function generate_excel_files_callback(){
//code
}发布于 2019-02-10 01:32:14
显然,cron在这个时候不适用于Drupal 8。为了解决我的问题,我所做的就是创建一个新模块,只处理我想要的cron作业。然后,从终极Cron的UI中,我会添加规则来安排我的cron任务。
use Drupal\MODULENAME\Controller\ClassName;
/**
* Implements hook_cron().
*/
function NEW_MODULENAME_cron() {
generate_excel_files_callback();
}
function generate_excel_files_callback(){
$obj = new ClassName();
$obj->generateXLSX();
}发布于 2021-08-04 01:55:15
回答:“但是cron没有按预定时间运行。”据我所知,只有在发送请求时,cron才会运行。所以任何对任何页面的请求。如果没有从服务器接收到请求,则无论您设置的时间如何,cron都不会运行。如果收到请求,它将检查自上次cron运行以来过期的时间,并将其与您的设置值进行比较,以确定是否需要再次运行。
https://drupal.stackexchange.com/questions/275775
复制相似问题