/** * Run all jobs */ public function runAll() { $allJobs = $this->storage->getJobs(); foreach ($allJobs as $name => $jobs) { foreach ($jobs as $jobScript) { $this->run($jobScript); } } }
/** * 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; }