public function action_process($id) { if (Request::$is_ajax && Batch::exists($id)) { try { // Retrieve batch from DB in the state we last left it : $batch = Batch::retrieve($id); // Process as many steps as possible during current request : if ($batch->process() === Batch::FINISHED) { // // Batch finished. Delete batch from db. $batch->delete(); $this->request->response = '0'; } else { // Batch not finished. Store current state of batch in DB so that next time we restart execution from here. $batch->store(); $this->request->response = '1'; } } catch (Exception $e) { if (isset($batch)) { $batch->delete(); } throw $e; } } else { $this->request->status = 403; } }