| 
<?php
 
 /**
 * Description of MySession
 *
 * @author Joseluis Laso
 */
 class MySession {
 
 private $filename;
 
 public function __construct($sid,$folder="/tmp") {
 $this->filename = $folder.'/'.$sid.'.ses';
 }
 
 public function write($mixed){
 file_put_contents($this->filename, json_encode($mixed));
 }
 
 public function read(){
 if (file_exists($this->filename))
 return file_get_contents($this->filename);
 else
 return "";
 }
 
 public function writeKey($key,$mixed){
 $all = json_decode($this->read(),true);
 $all[$key] = $mixed;
 $this->write($all);
 }
 
 public function readKey($key){
 $all = json_decode($this->read(),true);
 return isset($all[$key])?$all[$key]:null;
 }
 }
 
 /* Ejemplo de uso para ver el estado de una actividad
 <?php  // status.php
 if (isset($_REQUEST['sid'])) session_id($_REQUEST['sid']);
 session_start();
 
 // MySession
 require './lib/MySession.php';
 $mysession = new MySession(session_id());
 
 $id = isset($_REQUEST['id'])?$_REQUEST['id']:'';
 
 $p = $mysession->readKey('percent_'.$id);
 
 print(json_encode(array(
 "p"  => $p,
 "id" => $id,
 )));
 ?>
 
 */
 
 /* Ejemplo de uso para empezar la actividad desde una ruta de slim
 $app = Slim::getInstance();
 
 $id   = $app->request()->params('id');
 
 $mysession = new MySession( session_id() );
 
 $mysession->writeKey('percent_'.$id, 0);
 
 // hay que liberar la sesion para que status.php pueda trabajar
 session_write_close();
 */
 
 ?>
 
 |