diff --git a/Model/Schedule.php b/Model/Schedule.php index 1ad6cfb..e6d44b3 100644 --- a/Model/Schedule.php +++ b/Model/Schedule.php @@ -81,7 +81,7 @@ public function getConfig() { foreach($this->cronconfig->getJobs() as $groupname=>$group) { $override = $this->resource->getConfigValue('system/cron/'.$groupname.'/schedule_generate_every',0,'default'); if ($override) { - $scheduleoverrides[$groupname] = $override; + $scheduleoverrides[$groupname] = '*/'.$override; } foreach($group as $name=>$job) { if (!is_array($job)) continue; @@ -351,15 +351,17 @@ public function execute() { /** * Get an individual configuration for a job_code * - * @return array + * @return array|false */ public function getJobConfig($jobname) { #if a consumers job get default consumers runner config if (strpos($jobname,"mm_consumer") > -1) { $job = $this->config["consumers_runner"]; $job["name"] = $jobname; - } else { + } elseif (isset($this->config[$jobname])) { $job = $this->config[$jobname]; + } else { + $job = false; } return $job; } @@ -370,12 +372,15 @@ public function getJobConfig($jobname) { * @return string */ public function prepareStub($jobconfig, $stub, $scheduleid) { + if (!isset($jobconfig["instance"]) || !class_exists($jobconfig["instance"]) || !isset($jobconfig["method"])) { + return false; + } $code = trim($stub); $code = str_replace('<>',$this->basedir,$code); $code = str_replace('<>',$jobconfig["method"],$code); $code = str_replace('<>',$jobconfig["instance"],$code); $code = str_replace('<>',$scheduleid,$code); - $code = str_replace('<>',$jobconfig["name"],$code); + $code = str_replace('<>',$jobconfig["name"]??'',$code); return $code; } @@ -502,8 +507,11 @@ public function service() { $runcheck = $this->resource->getJobByStatus($job["job_code"],'running'); if (count($runcheck) == 0) { $jobconfig = $this->getJobConfig($job["job_code"]); + if ($jobconfig == false) { + continue; + } #if this is a consumers job use a different runtime cmd - if ($jobconfig["consumers"]) { + if (isset($jobconfig["consumers"])) { $consumerName = str_replace("mm_consumer_","",$jobconfig["name"]); $runtime = "bin/magento queue:consumers:start " . escapeshellarg($consumerName); if ($maxConsumerMessages) { @@ -516,7 +524,9 @@ public function service() { $cmd = $runtime; } else { $runtime = $this->prepareStub($jobconfig,$stub,$job["schedule_id"]); - $cmd = escapeshellcmd($this->phpproc)." -r ".escapeshellarg($runtime); + if ($runtime) { + $cmd = escapeshellcmd($this->phpproc) . " -r " . escapeshellarg($runtime); + } } $exec = sprintf("%s; %s &> %s & echo $!", 'cd ' . escapeshellarg($this->basedir), @@ -558,7 +568,9 @@ public function executeImmediate($jobname) { $this->getConfig(); $jobconfig = $this->getJobConfig($jobname); - + if ($jobconfig === false ) { + return; + } #create a schedule $schedule = array('scheduled_at' => time()); $scheduled = $this->resource->saveSchedule($jobconfig, time(), $schedule);