Changeset 485 for trunk/phpbms/modules/base/cron.php
- Timestamp:
- 04/07/09 11:44:18 (3 years ago)
- Files:
-
- 1 modified
-
trunk/phpbms/modules/base/cron.php (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/phpbms/modules/base/cron.php
r295 r485 1 <?php 1 <?php 2 2 $loginNoKick=true; 3 3 $loginNoDisplayError=true; 4 4 5 5 include("../../include/session.php"); 6 6 7 7 $now = gmdate('Y-m-d H:i', strtotime('now')); 8 9 $querystatment="SELECT id,name,crontab,job,startdatetime,enddatetime FROM scheduler WHERE inactive=0 AND startdatetime<NOW() AND (enddatetime>NOW() OR enddatetime IS NULL);"; 8 9 $querystatment = " 10 SELECT 11 id, 12 name, 13 crontab, 14 job, 15 startdatetime, 16 enddatetime 17 FROM 18 scheduler 19 WHERE 20 inactive = 0 21 AND startdatetime < NOW() 22 AND (enddatetime > NOW() OR enddatetime IS NULL)"; 23 10 24 $queryresult=$db->query($querystatment); 11 25 12 26 while($schedule_record=$db->fetchArray($queryresult)){ 27 13 28 $datetimearray=explode(" ",$schedule_record["startdatetime"]); 14 29 $schedule_record["startdate"]=stringToDate($datetimearray[0],"SQL"); … … 16 31 17 32 if($schedule_record["enddatetime"]){ 33 18 34 $datetimearray=explode(" ",$schedule_record["enddatetime"]); 19 35 $schedule_record["enddate"]=stringToDate($datetimearray[0],"SQL"); 20 36 $schedule_record["endtime"]=stringToTime($datetimearray[1],"24 Hour"); 21 } 22 23 $validTimes=getTimes($schedule_record); 37 38 }//endif enddateiem 39 40 $validTimes = getTimes($schedule_record); 41 24 42 if(is_array($validTimes) && in_array($now, $validTimes)){ 43 25 44 $success = @ include($schedule_record["job"]); 45 26 46 if($success){ 47 27 48 $updatestatement="UPDATE scheduler SET lastrun=NOW() WHERE id=".$schedule_record["id"]; 28 49 $db->query($updatestatement); 29 $log = new phpbmsLog("Secheduled Job ".$schedule_record["name"]." (".$schedule_record["id"].") completed","SCHEDULER",-2); 30 } else { 31 $log = new phpbmsLog("Secheduled Job ".$schedule_record["name"]." (".$schedule_record["id"].") returned errors","SCHEDULER",-2); 32 } 33 34 } 35 } 36 50 $log = new phpbmsLog("Scheduled Job ".$schedule_record["name"]." (".$schedule_record["id"].") completed","SCHEDULER",-2); 51 52 } else { 53 54 $log = new phpbmsLog("Scheduled Job ".$schedule_record["name"]." (".$schedule_record["id"].") returned errors","SCHEDULER",-2); 55 56 }//endif success 57 58 }//endif is_array(); 59 60 }//endwhile 61 62 37 63 function getTimes($recordarray){ 38 64 39 65 $dayInt = array('*',1,2,3,4,5,6,7); 40 66 $dayLabel = array('*',"Monday","Tuesday","Wedensday","Thursday","Friday","Saturday","Sunday"); … … 43 69 $metricsVar = array("*", "/", "-", ","); 44 70 $metricsVal = array(' every ','',' thru ',' and '); 45 71 46 72 $dateTimes = array(); 47 73 $ints = explode('::', str_replace(' ','',$recordarray["crontab"])); … … 59 85 $theDay = str_replace('*/','',$days); 60 86 $dayName[] = str_replace($dayInt, $dayLabel, $theDay); 61 } elseif($days != '*') { 87 } elseif($days != '*') { 62 88 if(strstr($days, ',')) { 63 89 $exDays = explode(',',$days); 64 90 foreach($exDays as $k1 => $dayGroup) { 65 91 if(strstr($dayGroup,'-')) { 66 $exDayGroup = explode('-', $dayGroup); 92 $exDayGroup = explode('-', $dayGroup); 67 93 for($i=$exDayGroup[0];$i<=$exDayGroup[1];$i++) { 68 94 $dayName[] = str_replace($dayInt, $dayLabel, $i); … … 73 99 } 74 100 } elseif(strstr($days, '-')) { 75 $exDayGroup = explode('-', $days); 101 $exDayGroup = explode('-', $days); 76 102 for($i=$exDayGroup[0];$i<=$exDayGroup[1];$i++) { 77 103 $dayName[] = str_replace($dayInt, $dayLabel, $i); … … 80 106 $dayName[] = str_replace($dayInt, $dayLabel, $days); 81 107 } 82 108 83 109 // check the day to be in scope: 84 110 if(!in_array($today['weekday'], $dayName)) { … … 88 114 return false; 89 115 } 90 91 116 117 92 118 // derive months part 93 119 if($mons == '*') { … … 104 130 // this month is not in one of the multiplier months 105 131 if(!in_array($today['mon'],$compMons)) { 106 return false; 132 return false; 107 133 } 108 134 } elseif($mons != '*') { … … 127 153 $monName[] = $mons; 128 154 } 129 155 130 156 // check that particular months are in scope 131 157 if(!in_array($today['mon'], $monName)) { … … 133 159 } 134 160 } 135 161 136 162 137 163 // derive dates part … … 147 173 $i += $mult; 148 174 } 149 175 150 176 if(!in_array($today['mday'], $dateName)) { 151 return false; 177 return false; 152 178 } 153 179 } elseif($dates != '*') { … … 158 184 $exDateGroup = explode('-', $dateGroup); 159 185 for($i=$exDateGroup[0];$i<=$exDateGroup[1];$i++) { 160 $dateName[] = $i; 186 $dateName[] = $i; 161 187 } 162 188 } else { … … 167 193 $exDateGroup = explode('-', $dates); 168 194 for($i=$exDateGroup[0];$i<=$exDateGroup[1];$i++) { 169 $dateName[] = $i; 195 $dateName[] = $i; 170 196 } 171 197 } else { 172 198 $dateName[] = $dates; 173 199 } 174 200 175 201 // check that dates are in scope 176 202 if(!in_array($today['mday'], $dateName)) { … … 178 204 } 179 205 } 180 206 181 207 // derive hours part 182 208 $currentHour = date('G', strtotime('00:00')); … … 213 239 } 214 240 } 215 241 216 242 // derive minutes 217 243 $currentMin = date('i', strtotime($recordarray["starttime"])); … … 239 265 $i += $mult; 240 266 } 241 267 242 268 } elseif($mins != '*') { 243 269 if(strstr($mins, ',')) { … … 261 287 $minName[] = $mins; 262 288 } 263 } 289 } 264 290 265 291 // prep some boundaries - these are not in GMT b/c gmt is a 24hour period, possibly bridging 2 local days … … 281 307 $hourSeen++; 282 308 foreach($minName as $kMin=>$min) { 283 if($hr < $currentHour || $hourSeen == 25) 309 if($hr < $currentHour || $hourSeen == 25) 284 310 $theDate = date('Y-m-d', strtotime('+1 day')); 285 311 else … … 287 313 288 314 $tsGmt = strtotime($theDate.' '.str_pad($hr,2,'0',STR_PAD_LEFT).":".str_pad($min,2,'0',STR_PAD_LEFT).":00"); // this is LOCAL 289 $validJobTime[] = gmdate('Y-m-d H:i', $tsGmt); 315 $validJobTime[] = gmdate('Y-m-d H:i', $tsGmt); 290 316 } 291 317 } 292 318 sort($validJobTime); 293 319 294 return $validJobTime; 320 return $validJobTime; 295 321 }//end function 296 322 ?>