コード例 #1
0
 static function poorMansCron()
 {
     $intervals = array("minute", "five", "fifteen", "hour", "week");
     foreach ($intervals as $interval) {
         $entity = getEntity(array("type" => "Cron", "metadata_name" => "interval", "metadata_value" => $interval));
         if (!$entity) {
             $entity = new Cron();
             $entity->interval = $interval;
             $entity->save();
         }
         Cron::run($interval, false);
     }
     return;
 }
コード例 #2
0
 static function run($interval, $ignore_last_run = true)
 {
     $phpbin = PHP_BINDIR . "/php";
     if ($ignore_last_run) {
         shell_exec('echo $phpbin -q ' . SITEPATH . 'cron/' . $interval . '.php | at now');
         return;
     }
     $entity = getEntity(array("type" => "Cron", "metadata_name" => "interval", "metadata_value" => $interval));
     if (!$entity) {
         $entity = new Cron();
         $entity->interval = $interval;
         $entity->save();
     }
     $last_ran = $entity->last_ran;
     if (!$last_ran) {
         $last_ran = 0;
     }
     switch ($interval) {
         case "minute":
             $seconds = 60;
             break;
         case "five":
             $seconds = 60 * 5;
             break;
         case "fifteen":
             $seconds = 60 * 15;
             break;
         case "hour":
             $seconds = 60 * 60;
             break;
         case "week":
         default:
             $seconds = 60 * 60 * 24 * 7;
             break;
     }
     $time = time();
     if ($time > $last_ran + $seconds) {
         $shell = $phpbin . ' -q ' . SITEPATH . 'cron/' . $interval . '.php > /dev/null 2>/dev/null &';
         shell_exec($shell);
         $last_ran = $time;
         $entity = getEntity(array("type" => "Cron", "metadata_name" => "interval", "metadata_value" => $interval));
         if ($entity) {
             $entity->last_ran = $last_ran;
             $entity->save();
         }
     }
     return;
 }