diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-04-25 06:53:34 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-04-25 06:53:34 +0000 |
commit | 2819a1b7b4d200c692889a3490672adfa5df9102 (patch) | |
tree | fd1631d606bfd93c6dc21879dfd2bbeaddc0ce3c /modules/exif | |
parent | 63ce71a32b32873e2d48fe1ff4f0928d44bd15ef (diff) |
Extract as many records as we can in a second
Diffstat (limited to 'modules/exif')
-rw-r--r-- | modules/exif/helpers/exif_task.php | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/modules/exif/helpers/exif_task.php b/modules/exif/helpers/exif_task.php index 3918e4ed..21978d90 100644 --- a/modules/exif/helpers/exif_task.php +++ b/modules/exif/helpers/exif_task.php @@ -48,21 +48,31 @@ class exif_task_Core { static function extract_exif($task) { $completed = $task->get("completed", 0); - $work = ORM::factory("item") - ->join("exif_records", "items.id", "exif_records.item_id") - ->where("exif_records.dirty", 1) - ->find(); - exif::extract($work); - $completed++; + $start = microtime(true); + foreach (ORM::factory("item") + ->join("exif_records", "items.id", "exif_records.item_id") + ->where("exif_records.dirty", 1) + ->limit(10) + ->find_all() as $item) { + if (microtime(true) - $start > 1) { + break; + } - $task->set("completed", $completed); + $completed++; + exif::extract($item); + } list ($remaining, $total, $percent) = self::_get_stats(); - $task->percent_complete = round(100 * $completed / ($remaining + $completed)); - - $task->status = t("%done records updated, index is %percent% up-to-date", - array("done" => $completed, "percent" => $percent)); + if ($remaining + $completed) { + $task->percent_complete = round(100 * $completed / ($remaining + $completed)); + $task->status = t2("one record updated, index is %percent% up-to-date", + "%count records updated, index is %percent% up-to-date", + $completed, array("percent" => $percent)); + } else { + $task->percent_complete = 100; + } + $task->set("completed", $completed); if ($remaining == 0) { $task->done = true; $task->state = "success"; |