get("maintenance") ->url(url::site("admin/schedule")); } /** * At this point, the output has been sent to the browser, so we can take some time * to run a schedule task. */ static function gallery_shutdown() { try { $schedule = ORM::factory("schedule") ->where("next_run_datetime", "<=", time()) ->where("busy", "!=", 1) ->order_by("next_run_datetime") ->find_all(1); if ($schedule->count()) { $schedule = $schedule->current(); $schedule->busy = true; $schedule->save(); try { if (empty($schedule->task_id)) { $task = task::start($schedule->task_callback); $schedule->task_id = $task->id; } $task = task::run($schedule->task_id); if ($task->done) { $schedule->next_run_datetime += $schedule->interval; $schedule->task_id = null; } $schedule->busy = false; $schedule->save(); } catch (Exception $e) { $schedule->busy = false; $schedule->save(); throw $e; } } } catch (Exception $e) { Kohana_Log::add("error", (string)$e); } } }