callback("delete_cache_task::delete_cache") ->name(t("Delete cache")) ->description(t("Truncate the cache table from the database.")) ->severity(log::SUCCESS), ); } static function delete_cache($task) { $start = microtime(true); $total = $task->get("total"); if (empty($total)) { $task->set("total", $total = db::build()->count_records("caches")); $task->set("last_id", 0); $task->set("completed", 0); } $last_id = $task->get("last_id"); $completed = $task->get("completed"); foreach (ORM::factory("cache") ->where("id", ">", $last_id) ->find_all(100) as $item) { $last_id = $item->id; $completed++; if ($completed == $total || microtime(true) - $start > 1.5) { break; } } $task->set("completed", $completed); $task->set("last_id", $last_id); if ($total == $completed) { $task->done = true; $task->state = "success"; $task->percent_complete = 100; $db = Database::instance(); $db->query("TRUNCATE TABLE {caches}"); } else { $task->percent_complete = round(100 * $completed / $total); } $task->status = t2("One row updated", "%count / %total rows truncated from the cache table", $completed, array("total" => $total)); } }