Index: job_queue.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/job_queue/job_queue.module,v retrieving revision 1.7 diff -u -r1.7 job_queue.module --- job_queue.module 18 Aug 2008 07:35:59 -0000 1.7 +++ job_queue.module 3 Nov 2008 10:56:05 -0000 @@ -89,17 +89,9 @@ } /** - * Dequeue and execute a queued job. Actions are logged via watchdog(). - * - * @return TRUE if a job was dequeued, reguardless of success or failure - * executing. FALSE if the queue was empty. + * Execute a queued job. Actions are logged via watchdog(). */ -function job_queue_dequeue() { - $job = db_fetch_object(db_query_range('SELECT jqid, description, function, arguments, file FROM {job_queue} WHERE priority <> %d ORDER BY priority, jqid', JOB_QUEUE_DO_NOT_RUN, 0, 1)); - if ($job === FALSE) { - return FALSE; - } - +function job_queue_execute($job) { if (!empty($job->file)) { include_once './'. $job->file; } @@ -112,17 +104,19 @@ watchdog('job_queue', 'Failed to run queued job "!description" because the function %function is not defined.', array('!description' => $job->description, '%function' => $job->function), WATCHDOG_ERROR); } db_query('DELETE FROM {job_queue} WHERE jqid = %d', $job->jqid); - - return TRUE; } +/** + * Implementation of hook_cron(). + */ function job_queue_cron() { - $job_count = db_result(db_query('SELECT count(*) FROM {job_queue}')); - while ($job_count > 0 && job_queue_dequeue()) { + $result = db_query('SELECT jqid, description, function, arguments, file FROM {job_queue} WHERE priority <> %d ORDER BY priority, jqid', JOB_QUEUE_DO_NOT_RUN); + + while ($job = db_fetch_object($result)) { if ((timer_read('page') / 1000) > (ini_get('max_execution_time') / 2)) { break; // Stop once we have used over half of the maximum execution time or exceeds the original number of jobs. } - $job_count -= 1; + job_queue_execute($job); } }