<?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();
*/
?>
|