summaryrefslogtreecommitdiff
path: root/modules/exif/helpers/exif_task.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/exif/helpers/exif_task.php')
-rw-r--r--modules/exif/helpers/exif_task.php32
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";