} else { break; } } // Send fail if ($err) { lib_scheduling_error('Scheduler::job_perform[fail]{rsync: ' . $cmd . '}(' . $err . ') |::> ' . implode("\n", $out) . ' <::|'); // tag the renderer as not repsonding $renderers = lib_scheduling_renderer_list(); foreach ($renderers as $_) { if ($_['host'] == $renderer['host']) { $_['status'] = 'not responding'; } } lib_scheduling_renderer_generate($renderers); lib_scheduling_alert('Scheduler::job_perform[not responding]{renderer: ' . $renderer['host'] . '}'); // move the job back to the queue lib_scheduling_file_move(lib_scheduling_config('processing-path') . '/' . $job['basename'], lib_scheduling_config('queue-path') . '/' . $job['basename']); die; } // Launch the rendering $cmd = $ssh_pgm . ' ' . $renderer['client'] . '@' . $renderer['host'] . ' "' . $renderer['launch'] . ' ' . $job_dir . ' 2>&1"'; $t1 = time(); exec($cmd, $cmdoutput, $returncode); $t2 = time(); $dt = $t2 - $t1; file_put_contents($job['location'] . '/renderer.log', implode("\n", $cmdoutput)); // Rendering fail if ($returncode) { $asset_meta['status'] = 'failed'; $res = ezmam_asset_metadata_set($album, $asset, $asset_meta);
/** * SSH with the renderer * * @param array $renderer The renderer * @param string $cmd The command * @return string The output */ function lib_scheduling_renderer_ssh($renderer, $cmd) { $ssh_pgm = lib_scheduling_config('ssh-path'); exec($ssh_pgm . ' ' . $renderer['client'] . '@' . $renderer['host'] . ' "' . $cmd . '"', $output, $ret); if ($ret) { lib_scheduling_alert($ssh_pgm . ' ' . $renderer['client'] . '@' . $renderer['host'] . ' "' . $cmd . '"'); lib_scheduling_alert('Scheduler::renderer_ssh[fail]{' . $cmd . '} |::>' . implode("\n", $output) . '<::|'); } return implode("\n", $output); }
/** * SSH with the renderer * * @param array $renderer The renderer * @param string $cmd The command * @return string The output */ function lib_scheduling_renderer_ssh(&$renderer, $cmd) { $str_cmd = 'ssh -o ConnectTimeout=' . lib_scheduling_config('ssh-timeout') . ' ' . $renderer['client'] . '@' . $renderer['host'] . ' "' . $cmd . '"'; exec($str_cmd, $output, $ret); if ($ret) { $renderer['ssh_error'] = true; lib_scheduling_alert('Scheduler::renderer_ssh[fail] |::>' . $output . '<::|'); return false; } return implode("\n", $output); }