コード例 #1
0
ファイル: vivvo_cron.php プロジェクト: ahanjir07/vivvo-dev
 function get_last_scheduled_run_time($job, $last_execute)
 {
     $extjob = array();
     $last_execute = $last_execute + 60 - $last_execute % 60;
     vivvo_cron_manager::parse_element($job[PC_MINUTE], $extjob[PC_MINUTE], 60);
     vivvo_cron_manager::parse_element($job[PC_HOUR], $extjob[PC_HOUR], 24);
     vivvo_cron_manager::parse_element($job[PC_DOM], $extjob[PC_DOM], 31);
     vivvo_cron_manager::parse_element($job[PC_MONTH], $extjob[PC_MONTH], 12);
     vivvo_cron_manager::parse_element($job[PC_DOW], $extjob[PC_DOW], 7);
     $dateArr = getdate($last_execute);
     $minutesAhead = 0;
     $i = 0;
     while ($minutesAhead < 525600 and (!$extjob[PC_MINUTE][$dateArr["minutes"]] or !$extjob[PC_HOUR][$dateArr["hours"]] or (!$extjob[PC_DOM][$dateArr["mday"]] or !$extjob[PC_DOW][$dateArr["wday"]]) or !$extjob[PC_MONTH][$dateArr["mon"]])) {
         if (!$extjob[PC_MONTH][$dateArr["mon"]]) {
             vivvo_cron_manager::inc_date($dateArr, 1, "mon");
             $minutesAhead += 1440;
         } elseif (!$extjob[PC_DOM][$dateArr["mday"]] or !$extjob[PC_DOW][$dateArr["wday"]]) {
             vivvo_cron_manager::inc_date($dateArr, 1, "mday");
             $minutesAhead += 1440;
         } elseif (!$extjob[PC_HOUR][$dateArr["hours"]]) {
             vivvo_cron_manager::inc_date($dateArr, 1, "hour");
             $minutesAhead += 60;
         } elseif (!$extjob[PC_MINUTE][$dateArr["minutes"]]) {
             vivvo_cron_manager::inc_date($dateArr, 1, "minute");
             $minutesAhead++;
         }
         $i++;
         if ($i > 1000) {
             return false;
         }
     }
     return mktime($dateArr["hours"], $dateArr["minutes"], 0, $dateArr["mon"], $dateArr["mday"], $dateArr["year"]);
 }