自上次执行cron以来,如何获取(日期)时间戳?


11

我正在构建模块,但卡住了。.我需要上一个cron的时间戳,因为我运行hook_cron作业,以便可以检查哪些节点是新节点并通过电子邮件发送这些节点。

所以我需要最后一次cron运行的日期/时间戳,但是如何到达那里呢?

Answers:


19

可以使用以下命令获取上次cron运行的UNIX时间戳:

variable_get('cron_last');

如果需要,您可以使用PHP的date函数轻松地操作UNIX时间戳。


3

hook_requirement()函数可以为您提供帮助。

检查一下:http : //api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_requirements/7

在您的模块文件中,编写hook_requirement()函数。

function hook_requirements($phase) {
if ($phase == 'runtime') {
    $cron_last = variable_get('cron_last');

    if (is_numeric($cron_last)) {
      $requirements['cron']['value'] = $t('Last run !time ago', array('!time' => format_interval(REQUEST_TIME - $cron_last)));
    }
    else {
      $requirements['cron'] = array(
        'description' => $t('Cron has not run. It appears cron jobs have not been setup on your system. Check the help pages for <a href="@url">configuring cron jobs</a>.', array('@url' => 'http://drupal.org/cron')), 
        'severity' => REQUIREMENT_ERROR, 
        'value' => $t('Never run'),
      );
    }

    $requirements['cron']['description'] .= ' ' . $t('You can <a href="@cron">run cron manually</a>.', array('@cron' => url('admin/reports/status/run-cron')));

    $requirements['cron']['title'] = $t('Cron maintenance tasks');
  }
}

有用,但我更喜欢巴特的答案,因为它更简单+1
FLY 2012年

在状态报告页面回调中,仅在“运行时”阶段调用hook_requirements()(参见api.drupal.org/api/drupal/modules%21system%21system.api.php/…)。我看不出这将如何帮助确定哪些节点是新的。
mpdonadio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.