前回のcron実行以降の(日付)タイムスタンプを取得するにはどうすればよいですか?


11

モジュールを構築していますが、行き詰まっています。hook_cronジョブを実行するときに、以前のcronのタイムスタンプが必要です。これにより、どのノードが新しいかを確認し、それらにメールを送信できます。

それで、前回のcron実行からの日付/時刻スタンプが必要ですが、どうすれば取得できますか?

回答:


19

最後のcron実行のUNIXタイムスタンプは、次のコマンドで取得できます。

variable_get('cron_last');

必要に応じて、PHPの日付関数を使用して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

hook_requirements()は、ステータスレポートページコールバックからの「ランタイム」フェーズでのみ呼び出されます(cf.api.drupal.org/api/drupal/modules%21system%21system.api.php/…)。これがどのノードが新しいかを判断するのにどのように役立つかわかりません。
mpdonadio
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.