Création et conception d'un système optimisé d'accès aux données
This commit is contained in:
parent
9bbc3e4b79
commit
8eaec05488
15
automate.php
15
automate.php
|
@ -7,6 +7,7 @@
|
|||
use \manager\ManagerError;
|
||||
use \manager\Repo;
|
||||
use \manager\Database;
|
||||
use \manager\lightdb;
|
||||
|
||||
use \api\client;
|
||||
|
||||
|
@ -87,7 +88,15 @@
|
|||
|
||||
|
||||
// Lancement du téléchargement
|
||||
$req = new ModuleRequest('download/phone', array('subjects'=>[200]));
|
||||
$res = $req->dispatch();
|
||||
// $req = new ModuleRequest('download/phone', array('subjects'=>[200]));
|
||||
// $res = $req->dispatch();
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// RUN database
|
||||
$db = new lightdb('testdb1');
|
||||
var_dump($db->index());
|
||||
|
|
|
@ -0,0 +1,151 @@
|
|||
<?php
|
||||
|
||||
namespace manager;
|
||||
|
||||
|
||||
class lightdb{
|
||||
|
||||
// REPERTOIRE RACINE DE TOUTES LES BDD
|
||||
public static $root = __ROOT__.'/tmp/';
|
||||
|
||||
// ATTRIBUTS
|
||||
private $dbname;
|
||||
private $dir;
|
||||
private $index;
|
||||
private $driver;
|
||||
private $line;
|
||||
|
||||
/* CONSTRUCTEUR -> CREER LES FICHIERS S'ILS N'EXISTENT PAS SINON, RECUPERE LES DONNES
|
||||
*
|
||||
* @dbname<String> Nom de la base de données
|
||||
*
|
||||
*/
|
||||
public function __construct($dbname){
|
||||
/* [0] On récupère les attributs
|
||||
=========================================================*/
|
||||
$this->dbname = $dbname;
|
||||
$this->dir = self::$root.$dbname.'/';
|
||||
|
||||
/* [1] Création du répertoire s'il n'existe pas
|
||||
=========================================================*/
|
||||
if( !is_dir($this->dir) )
|
||||
mkdir($this->dir);
|
||||
|
||||
/* [2] Création du fichier d'index ou récupération
|
||||
=========================================================*/
|
||||
/* (1) Si le fichier n'existe pas, on le crée */
|
||||
if( !file_exists($this->dir.'index') )
|
||||
file_put_contents($this->dir.'index', json_encode(array()) );
|
||||
|
||||
|
||||
/* (2) On récupère le contenu du fichier */
|
||||
$fIndex = new \SplFileObject($this->dir.'index');
|
||||
$fIndex->seek(0);
|
||||
|
||||
$index = json_decode( $fIndex->current(), true );
|
||||
|
||||
// Si erreur de parsage, on retourne une erreur
|
||||
if( is_null($index) ) return;
|
||||
$this->index = $index;
|
||||
|
||||
/* [3] Initialisation du gestionnaire d'acces (SplFileObject)
|
||||
=========================================================*/
|
||||
/* (1) Si le fichier n'existe pas, on le crée */
|
||||
if( !file_exists($this->dir.'data') )
|
||||
file_put_contents($this->dir.'data', '' );
|
||||
|
||||
/* (2) On place un 'driver' sur le fichier */
|
||||
$this->driver = new \SplFileObject($this->dir.'data', 'r+');
|
||||
|
||||
/* (3) On récupère le nombre de lignes */
|
||||
$this->line = 0;
|
||||
while( !$this->driver->eof() ){
|
||||
$this->line++;
|
||||
$this->driver->fgetcsv();
|
||||
}
|
||||
|
||||
var_dump($this->line);
|
||||
}
|
||||
|
||||
|
||||
public function close(){ $this->driver = null; }
|
||||
|
||||
|
||||
|
||||
/* RETOURNE LA LISTE DES INDEX
|
||||
*
|
||||
* @i<String> Index pour lequel on veut la ligne et le hash
|
||||
*
|
||||
* @return Index<Array> Tableau associatif contenant le hash et la ligne
|
||||
*
|
||||
*/
|
||||
public function index($i=null){
|
||||
return is_numeric($i) ? $this->index : $this->index;
|
||||
}
|
||||
|
||||
|
||||
/* INSERTION D'UNE ENTREE DANS LA BASE DE DONNEES
|
||||
*
|
||||
* @key<String> Clé qui permettra l'accès direct
|
||||
* @data<mixed*> Objet qui sera enregistré dans la base
|
||||
*
|
||||
* @return status<Boolean> Retourne TRUE si tout s'est bien passé, sinon FALSE
|
||||
*
|
||||
*/
|
||||
public function insert($key, $data){
|
||||
/* (1) On vérifie que la clé est unique */
|
||||
if( array_key_exists($key, $this->index) )
|
||||
return false;
|
||||
|
||||
/* (2) On ajoute les données aux fichier */
|
||||
|
||||
|
||||
|
||||
$this->index[$key] = $data;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* MODIFICATION D'UNE ENTREE DE CLE DONNEE
|
||||
*
|
||||
* @key<String> Clé associée à la valeur à modifier
|
||||
* @data<mixed*> Nouvelle valeur, si tableau associatif, remplacera uniquement les valeurs données
|
||||
*
|
||||
* @return status<Boolean> Retourne TRUE si tout s'est bien passé, sinon FALSE
|
||||
*
|
||||
*/
|
||||
public function update($key, $data){}
|
||||
|
||||
|
||||
/* RENVOIE LES DONNEES ASSOCIEES A UNE CLE DONNEE
|
||||
*
|
||||
* @key<String> Clé associée à la valeur à récupérer
|
||||
*
|
||||
* @return data<mixed*> Renvoie la valeur associée à la clé, FALSE si erreur
|
||||
*
|
||||
*/
|
||||
public function fetch($key){}
|
||||
|
||||
|
||||
/* RENVOIE LES DONNEES ASSOCIEES AUX CLES DONNEES
|
||||
*
|
||||
* @keys<Array> Liste des clés associées aux valeurs à récupérer
|
||||
*
|
||||
* @return data<Array> Renvoie un tableau des valeurs valeur associées aux clés (clé1->valeur1), FALSE si erreur
|
||||
*
|
||||
*/
|
||||
public function fetchAll($keys){}
|
||||
|
||||
|
||||
/* RENVOIE LES DONNEES ASSOCIEES A UN CHAMP DE RECHERCHE
|
||||
*
|
||||
* @nomParam<typeParam> Description du param
|
||||
*
|
||||
* @return nomRetour<typeRetour> Description du retour
|
||||
*
|
||||
*/
|
||||
public function filter($data){} // select() en comparant $data
|
||||
public function delete($key){}
|
||||
|
||||
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue