Bonjour à tous,
Pour des question de performances, je voulais enregistrer plusieurs informations (une 10aine) pour un nombre très important de “clients”.
Dans ce cas, l’utilisation d’une base de données n’aura pas été réellement justifiée et aurait ralentie le script…
C’est quoi, j’ai donc choisi de stocker ces informations dans un fichier. Le fichier ini, permet d’organiser de manière très simple un grand nombre de données. De plus, il peut être “récuperer” simplement par PHP avec la fonction parse_ini_file.
Pour écrire un fichier ini justement, il n’y a pas de fonctions PHP ! C’est pourquoi je me suis vu dans l’obligation de créer une classe à cet effet, la voilà :
<?php class ini { var $ini; var $filename; public function ini ($filename, $commentaire = false) { $this->filename = $filename; $this->ini = (!$commentaire) ? ' ' : ';'.$commentaire; } public function ajouter_array ($array) { foreach ($array as $key => $val) { if (is_array($val)) { $this->sous_tableau($val, $key); } else if (is_string($key)) { $this->ajouter_valeur($key, $val); } } } private function sous_tableau ($tab, $groupe = false) { if ($groupe) { $this->ini .= "n".'['.$groupe.']'; } foreach ($tab as $key => $val) { if (!$this->ajouter_valeur($key, $val)) return false; } $this->ini .= "n"; return true; } private function ajouter_valeur ($key, $val) { if (is_array($val)) { echo '<strong>Erreur :</strong> Impossible d'ajouter une valeur'; return false; } else if (is_string($val) OR is_double($val) OR is_int($val)) { $this->ini .= "n".$key.' = "'.$val.'"'; } else { echo '<strong>Erreur :</strong> Le type de donnée n'est pas supporté'; return false; } return true; } public function ecrire ($rewrite = false) { $c = true; if (file_exists($this->filename)) { if ($rewrite) { @unlink($filename); } else if (!$rewrite) { echo '<strong>Erreur fatale :</strong> Le fichier ini existe déjà'; $c = false; return false; } } if ($c) { $fichier = fopen($this->filename, 'w'); if (!$fichier) { echo '<strong>Erreur fatale :</strong> Impossible d'ouvrir le fichier'; return false; } if (!fwrite($fichier, $this->ini)) { echo '<strong>Erreur fatale :</strong> Impossible d'écrire dans le fichier'; return false; } fclose($fichier); } } } ?>
Pour l’utiliser, rien de plus simple :
<?php $array = array(); $array['val1'] = 10; $array['val2'] = 'bonjour'; $array['val3'] = "Hollé ; Bonjour"; $array['maurice'] = array ('test' => 'valeeur1', 'test2' => 'Val2'); $array['georges'] = array ('test' => 'valeeur1', 'test2' => 'Val2'); $ini = new ini ('fichier.ini', 'Description du fichier'); $ini->ajouter_array($array); $ini->ecrire(); ?>
Ce qui génèrera un fichier “fichier.ini” à l’endroit du script contenant :
;Description du fichier val1 = "10" val2 = "bonjour" val3 = "Hollé ; Bonjour" [maurice] test = "valeeur1" test2 = "Val2" [georges] test = "valeeur1" test2 = "Val2"
A bientôt.