Massive refactor to use SihnonFramework and PEAR's Net_Gearman

This commit is contained in:
2011-04-21 23:31:21 +01:00
parent fa7b54b861
commit d3fe08d40f
75 changed files with 290 additions and 1410 deletions

View File

@@ -1,6 +1,10 @@
<?php
require_once '../config.php';
require_once RippingCluster_Lib . 'RippingCluster/Main.class.php';
require_once '../private/config.php';
require_once(SihnonFramework_Lib . 'SihnonFramework/Main.class.php');
//require_once RippingCluster_Lib . 'RippingCluster/Main.class.php';
SihnonFramework_Main::registerAutoloadClasses('Sihnon', SihnonFramework_Lib,
'RippingCluster', SihnonFramework_Main::makeAbsolutePath('../source/lib/'));
?>

View File

@@ -2,36 +2,38 @@
define('HBC_File', 'run-jobs');
require_once '../config.php';
require_once RippingCluster_Lib . 'RippingCluster/Main.class.php';
require_once '../private/config.php';
require_once(SihnonFramework_Lib . 'SihnonFramework/Main.class.php');
require_once 'Net/Gearman/Client.php';
SihnonFramework_Main::registerAutoloadClasses('Sihnon', SihnonFramework_Lib,
'RippingCluster', SihnonFramework_Main::makeAbsolutePath('../lib/'));
try {
$main = RippingCluster_Main::instance();
$config = $main->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->setCompleteCallback("gearman_complete_callback");
$gearman->setFailCallback("gearman_fail_callback");
$client = new Net_Gearman_Client('river.sihnon.net:4730');//$config->get('rips.job_servers'));
$set = new Net_Gearman_Set();
// Retrieve a list of Created jobs
$jobs = RippingCluster_Job::allWithStatus(RippingCluster_JobStatus::CREATED);
foreach ($jobs as $job) {
// Enqueue the job using gearman
$job->queue($gearman);
list($method, $rip_options) = $job->queue();
$task = new Net_Gearman_Task($method, $rip_options);
$task->attachCallback('gearman_complete', Net_Gearman_Task::TASK_COMPLETE);
$task->attachCallback('gearman_fail', Net_Gearman_Task::TASK_FAIL);
$set->addTask($task);
$job->updateStatus(RippingCluster_JobStatus::QUEUED);
}
// Start the job queue
$result = $gearman->runTasks();
if (!$result) {
$log->error($gearman->error());
die($gearman->error());
}
$result = $client->runSet($set);
$log->info("Job queue completed");
} catch (RippingCluster_Exception $e) {
@@ -39,35 +41,23 @@ try {
}
function gearman_created_callback($gearman_task) {
$main = RippingCluster_Main::instance();
$log = $main->log();
$log->info("Job successfully queued with Gearman", $gearman_task->unique());
}
function gearman_data_callback($gearman_task) {
function gearman_complete($method, $handle, $result) {
$main = RippingCluster_Main::instance();
$log = $main->log();
$log->debug("Received data callback from Gearman Task");
/*$log->info("Job Complete", $job->id());*/
$log->info("Job complete");
}
function gearman_complete_callback($gearman_task) {
function gearman_fail($task) {
$main = RippingCluster_Main::instance();
$log = $main->log();
$log->info("Job Complete", $job->id());
}
function gearman_fail_callback($gearman_task) {
$main = RippingCluster_Main::instance();
$log = $main->log();
$job = RippingCluster_Job::fromId($gearman_task->unique());
/*$job = RippingCluster_Job::fromId($gearman_task->unique());
$job->updateStatus(RippingCluster_JobStatus::FAILED);
$log->info("Job Failed", $job->id());
$log->info("Job Failed", $job->id());*/
$log->info("Job failed");
}

View File

@@ -19,13 +19,13 @@
</div>
<div id="navigation">
{include file=navigation.tpl}
{include file="navigation.tpl"}
</div>
<div id="page-container">
<div id="sidebar">
{include file=sidebar.tpl}
{include file="sidebar.tpl"}
</div>
<div id="page">

View File

@@ -17,7 +17,7 @@
{assign var='source_plugin' value=$source->plugin()}
{assign var='source_filename' value=$source->filename()}
{assign var='source_filename_encoded' value=$source->filenameEncoded()}
{assign var='source_cached' value="$source->isCached()}
{assign var='source_cached' value=$source->isCached()}
<li>
[ <a href="{$base_uri}rips/source-details/plugin/{$source_plugin}/id/{$source_filename_encoded}" title="Browse source details">Browse</a> |
<a href="{$base_uri}rips/setup-rip/plugin/{$source_plugin}/id/{$source_filename_encoded}" title="Rip this source">Rip</a> |