This handler cron is intended to be called every 5 mins and will run 5 min tasks and 1 hour tasks, using a timestamp stored for each. If it hasn’t been called every 5 mins it will loop the 5 min tasks to catch up

  $CronLastRunDateTime = get_site_option('MYPLUGINNAME_CronLastRunDateTime');   //Already stored as strtotime()
  $TheDateTimeNow = strtotime(date("Y-m-d H:i:s"));
  if ($CronLastRunDateTime === False)
    $CronLastRunSecondsAgo = (60 * 60);     //Default to 1 hour ago
    $CronLastRunSecondsAgo = $TheDateTimeNow - $CronLastRunDateTime;
  if ($CronLastRunSecondsAgo < 0)
    $CronLastRunSecondsAgo = (5*60);    //Something bad has happened, set to run now once
  $CronLastRunHour = get_site_option('MYPLUGINNAME_CronLastRunHour', -1);
  $TheHourNow = intval(date("H"));
  //We want to ensure that we run our every 5 mins tasks multiple times if its taken longer than 5 mins to get here, e.g. on a site where cron isn't happening every 5 mins due to
  //low visitor numbers and no dedicated cron event setup.
  if ($CronLastRunSecondsAgo > (60 * 60))   //Limit to max 1 hour, if its more than this then discard additional 5 min events as we don't want to go crazy with this feature
    $CronLastRunSecondsAgo = (60 * 60);
  while ($CronLastRunSecondsAgo >= ((5*60)-10) )      //Give a little bit of error margin, 10 secs
    $CronLastRunSecondsAgo -= (5 * 60);
    //----- DO ONCE EVERY 5 MINS TASKS -----
    //All done - Store the time stamp
    update_option('MYPLUGINNAME_CronLastRunDateTime', $TheDateTimeNow, True);
  } //while ($CronLastRunSecondsAgo >= ((5*60)-10) )

  if ($CronLastRunHour != $TheHourNow)
    //----- DO ONCE PER HOUR TASKS -----

    //All don - Store the hour
    update_option('MYPLUGINNAME_CronLastRunHour', $TheHourNow, True);
  } //if ($CronLastRunHour != $TheHourNow)
We benefit hugely from resources on the web so we decided we should try and give back some of our knowledge and resources to the community by opening up many of our company’s internal notes and libraries through mini sites like this. We hope you find the site helpful.
Please feel free to comment if you can add help to this page or point out issues and solutions you have found, but please note that we do not provide support on this site. If you need help with a problem please use one of the many online forums.


Your email address will not be published.