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);
   }
 }
 
