コード例 #1
0
ファイル: Runner.php プロジェクト: vbuilder/scheduler
 /**
  * Run all jobs
  */
 public function runAll()
 {
     $allJobs = $this->storage->getJobs();
     foreach ($allJobs as $name => $jobs) {
         foreach ($jobs as $jobScript) {
             $this->run($jobScript);
         }
     }
 }
コード例 #2
0
ファイル: Scheduler.php プロジェクト: vbuilder/scheduler
 /**
  * Schedules job for execution
  *
  * @param string
  * @param string callable
  *
  * @return string path to job script
  *
  * @throws Nette\InvalidArgumentException if invalid argument received
  * @throws Nette\InvalidStateException if scheduling failed
  */
 public function schedule($name, $callable, $arg1 = NULL)
 {
     if (!is_scalar($name) || $name == '') {
         throw new Nette\InvalidArgumentException("Invalid job name");
     }
     if (!is_scalar($callable) || $callable == '') {
         throw new Nette\InvalidArgumentException("Invalid callable");
     }
     list($class, $method) = explode('::', $callable);
     $metadata = array();
     $phpCode = "" . "\$container = require " . var_export($this->boostrapPath, TRUE) . ";\n" . "\$arguments = unserialize(<<<XXXXXZZZZ\n" . serialize(array_slice(func_get_args(), 2)) . "\n" . "XXXXXZZZZ\n" . ");\n";
     // Service
     if (strncmp($class, '@', 1) == 0) {
         $phpCode = $phpCode . 'return call_user_func_array(array($container->getService(' . var_export(substr($class, 1), TRUE) . '), ' . var_export($method, TRUE) . '), $arguments);';
     } else {
         $phpCode = $phpCode . 'return call_user_func_array(' . var_export($callable, TRUE) . ', $arguments);';
     }
     $jobFile = $this->storage->createJob($name, $metadata, "{$phpCode}\n");
     if (!$jobFile) {
         throw new Nette\InvalidStateException("Cannot schedule job {$name}");
     }
     return $jobFile;
 }