diff --git a/run-jobs.php b/run-jobs.php new file mode 100644 index 0000000..61c42a9 --- /dev/null +++ b/run-jobs.php @@ -0,0 +1,90 @@ +config(); + $log = $main->log(); + + $gearman = new GearmanClient(); + $gearman->addServers($config->get('rips.job_servers')); + $gearman->setCreatedCallback("gearman_created_callback"); + $gearman->setDataCallback("gearman_data_callback"); + $gearman->setStatusCallback("gearman_status_callback"); + $gearman->setCompleteCallback("gearman_complete_callback"); + $gearman->setFailCallback("gearman_fail_callback"); + + // Retrieve a list of Created jobs + $jobs = HandBrakeCluster_Job::allWithStatus(HandBrakeCluster_JobStatus::CREATED); + + foreach ($jobs as $job) { + // Enqueue the job using gearman + $job->queue($gearman); + } + + // Start the job queue + $result = $gearman->runTasks(); + if (!$result) { + $log->error($gearman->error()); + die($gearman->error()); + } + + $log->info("Job queue completed"); + +} catch (HandBrakeCluster_Exception $e) { + die("Uncaught Exception (" . get_class($e) . "): " . $e->getMessage() . "\n"); +} + + +function gearman_created_callback($gearman_task) { + $main = HandBrakeCluster_Main::instance(); + $log = $main->log(); + + $log->info("Job successfully queued with Gearman", $gearman_task->unique()); +} + +function gearman_data_callback($gearman_task) { + $main = HandBrakeCluster_Main::instance(); + $log = $main->log(); + + $log->debug("Got some data from gearman", $gearman_task->unique()); +} + +function gearman_status_callback($gearman_task) { + $main = HandBrakeCluster_Main::instance(); + $log = $main->log(); + + $job = HandBrakeCluster_Job::fromId($gearman_task->unique()); + $status = $job->currentStatus(); + + $rip_progress = $gearman_task->taskNumerator() / $gearman_task->taskDenominator(); + if ($rip_progress > $status->ripProgress() + 0.1) { + $status->updateRipProgress(); + } +} + +function gearman_complete_callback($gearman_task) { + $main = HandBrakeCluster_Main::instance(); + $log = $main->log(); + + $job = HandBrakeCluster_Job::fromId($gearman_task->unique()); + $job->updateStatus(HandBrakeCluster_JobStatus::COMPLETE); + + $log->info("Job Complete", $job->id()); +} + +function gearman_fail_callback($gearman_task) { + $main = HandBrakeCluster_Main::instance(); + $log = $main->log(); + + $job = HandBrakeCluster_Job::fromId($gearman_task->unique()); + $job->updateStatus(HandBrakeCluster_JobStatus::FAILED); + + $log->info("Job Failed", $job->id()); +} + + + + + +?> \ No newline at end of file