Example #1
0
 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;
     }
 }