summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-04-17 10:02:13 +0000
committerBharat Mediratta <bharat@menalto.com>2009-04-17 10:02:13 +0000
commit1d6554764c04fa633eab2e09846dd9b270a4e813 (patch)
tree3326b792759453dcb824910799d0ef3266e023cd
parentf243e8d41c6df6a674275bc6d63218b0daa584d5 (diff)
Make the update_index task continue until it has used half a second
before stopping. This is *way* more efficient than just doing 2 per request.
-rw-r--r--modules/search/helpers/search_task.php28
1 files changed, 15 insertions, 13 deletions
diff --git a/modules/search/helpers/search_task.php b/modules/search/helpers/search_task.php
index 8d69d3dc..892ff4d4 100644
--- a/modules/search/helpers/search_task.php
+++ b/modules/search/helpers/search_task.php
@@ -46,22 +46,24 @@ class search_task_Core {
static function update_index($task) {
$completed = $task->get("completed", 0);
- foreach (ORM::factory("search_record")->where("dirty", 1)->limit(2)->find_all() as $record) {
- search::update_record($record);
- $completed++;
- }
- $task->set("completed", $completed);
+ $start = microtime(true);
+ while (!$task->done && microtime(true) - $start < .5) {
+ foreach (ORM::factory("search_record")->where("dirty", 1)->limit(5)->find_all() as $record) {
+ search::update_record($record);
+ $completed++;
+ }
- list ($remaining, $total, $percent) = self::_get_stats();
- if ($remaining + $completed) {
- $task->percent_complete = round(100 * $completed / ($remaining + $completed));
-
- $task->status = t("%done records records updated, index is %percent% up-to-date",
- array("done" => $completed, "percent" => $percent));
- } else {
- $task->percent_complete = 100;
+ list ($remaining, $total, $percent) = self::_get_stats();
+ if ($remaining + $completed) {
+ $task->percent_complete = round(100 * $completed / ($remaining + $completed));
+ $task->status = t("%done records records updated, index is %percent% up-to-date",
+ array("done" => $completed, "percent" => $percent));
+ } else {
+ $task->percent_complete = 100;
+ }
}
+ $task->set("completed", $completed);
if ($remaining == 0) {
$task->done = true;
$task->state = "success";