Index: job_queue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/job_queue/job_queue.module,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 job_queue.module
--- job_queue.module	11 Mar 2008 19:04:20 -0000	1.1.2.7
+++ job_queue.module	3 Nov 2008 10:52:42 -0000
@@ -80,38 +80,33 @@
 }
 
 /**
- * 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() {
-  $result = 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 (db_num_rows($result) > 0) {
-    $job = db_fetch_object($result);
-    if (!empty($job->file)) {
-      include_once $job->file;
-    }
-    if (function_exists($job->function)) {
-      call_user_func_array($job->function, unserialize($job->arguments));
-      watchdog('job_queue', t('Ran queued job "!description"', array('!description' => $job->description)));
-    }
-    else {
-      watchdog('job_queue', t('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;
+function job_queue_execute($job) {
+  if (!empty($job->file)) {
+    include_once $job->file;
+  }
+  if (function_exists($job->function)) {
+    call_user_func_array($job->function, unserialize($job->arguments));
+    watchdog('job_queue', t('Ran queued job "!description"', array('!description' => $job->description)));
   }
-  return FALSE;
+  else {
+    watchdog('job_queue', t('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);
 }
 
+/**
+ * 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);
   }
 }
 
