Lien vers ce message 02 Mars 2005, 1:53
Grande nouveauté de la version 1.0.0 BETA2 de FSB, les requètes de cache. Ces requètes sont simplement un outil permettants :
1) De pouvoir facilement effectuer des actions sur des fichiers du cache
2) De permettre un accès immédiat aux fichiers cache sans passer par ceux ci.

Leur utilité est fait notament pour les fichiers d'installation des MODS et pour les mises à jour. Ainsi vous n'êtes (vous moddeurs) jamais censé en théorie ouvrir un fichier du cache dans votre installation du MOD. Voici la syntaxe des différentes requètes disponibles.

ATTENTION, les requètes sont sensibles à la casse. SELECT est une commande bonne mais select ne l'est pas.

[size=18]CREATE[/size]
    Cette commande permet de créer automatiquement un nouveau fichier du cache avec une structure de tableau :
    CREATE table champs1 champs2 ... champsN

    Le second argument "table" est le nom du tableau qui sera créé, le nom du fichier sera cache/fichier_table.php. Ensuite vous pouvez ajouter nautant de champs que vous souhaitez à votre tableau. Notez que cette commande requiert que le dossier cache/ soit CHMODer en 0777



[size=18]ALTER[/size]
    Cette commande permet de modifier la structure d'un tableau, voici sa syntaxe :
    ALTER table [[ADD champs [DEFAULT value][DROP champs]]

    L'argument ADD va ajouter un champs. Si vous souhaitez donner une valeur directeent à tous ces champs utilisez DEFAULT enssuite.
    L'argument DROP va supprimer un champs du tableau.
    Voici une sérieu d'exemples :
    ALTER forum ADD un_champ;
    ALTER forum DROP un_champ;
    
    ALTER forum ADD un_champ DEFAULT value;
    ALTER forum ADD un_champ2 DROP un_champ DROP un_champ2;



[size=18]INSERT[/size]
    Cette commande permet d'insérer une nouvelle ligne dans un tableau du cache. Elle prend un argument optionel FIELDS. Si cet argument est donné vous pouvez choisir les champs qui seront affectés par le INSERT (les autres champs auront une valeur ''). Si vous ne donnez pas de FIELDS vous devez préciser autant de valeur qu'il y a de champs dans VALUES.
    Prenons par exemple une table avec 4 champs (1, 2, 3, 4) :
    INSERT table FIELDS 1 3 VALUES value1 value3;
    INSERT table VALUES value1 value2 value3 value4;



[size=18]UPDATE[/size]
    Cette commande met à jour des champs d'une ou plusieurs lignes. Voici la syntaxe :
    UPDATE table champs1 value1 champs2 value2 ... champsN valueN [WHERE champs value]

    La clause WHERE n'est pas obligatoire, prenons des exemples :
    UPDATE forum forum_nom 'un nouveau nom a mon forum' forum_description 'Une nouvelle description' WHERE forum_id 1 3

    Va assigner ces valeurs aux champs des forums dont l'ID est 1 ou 3. Si vous ommettez la clause WHERE toutes les lignes seront affectées.



----- A partir d'ici les requètes ne devrait pas vous servir pour les fichiers d'install ------------

[size=18]DELETE[/size]
    Cette commande supprime les lignes indiqués, voici sa syntaxe :
    DELETE table WHERE champ condition ... conditionN

    Voici un exemple :
    DELETE forum WHERE forum_id 1 3 5;



[size=18]DROP[/size]
    Cette commande supprime les fichiers caches donnés (à utiliser avec prudence) :
    DROP fichier1 fichier2 ... fichierN



[size=18]SELECT[/size]
    Cette commande selectionne des données (utilisez cette commande depuis le panneau d'administration vous montrera les données sellectionnés :
    SELECT table champs1 champs2 ... champsN [WHERE champs condition]

    La clause WHERE n'est pas obligatoire, voici des exemples :
    SELECT forum forum_id forum_nom forum_description WHERE cat_id 1 2;
    SELECT forum *



[size=18]BACKUP[/size]
    Cette commande selectionne des données sur les fichiers cache passés en argument. Elle dispose de trois flags : DATA (selelection les données), STRUCT (selectionne la structure) et DATASTRUCT (selection données et structures). Par exemple :
    BACKUP DATA categorie forum smiley;
    BACKUP STRUCTDATA forum


----- Quelques trucs et astuces ----------------

1) Vous pouvez utiliser les ' ' autour d'une valeur pour la préserver des espaces, par exemple :
INSERT table FIELDS description VALUES 'Je suis une description'


2) N'utilisez pas les requètes de cahce dans vos programmes en plein sur le forum, en théorie elle seront aussi lente (voire plus) qu'une requète SQL. Pour préserver la rapidité manipulez directement les tableaux.

3) La classe implémente des fonctions qui peuvent vous servir (dans des fichiers de mise à jour par exemple), ou dans des cas précis :
// On instancie la classe
include($racine . 'includes/class/class_cache_parser.php');
$pcache = new pcache($racine . 'cache/');

// On éxécutes une requète
if (!$pcache->query('UPDATE forum forum_nom \'un nom pour mon forum\' WHERE forum_id 1'))
{
   info('Erreur', $pcache->errno_text, __LINE__, __FILE__, $pcache->errno_query);
}

// On va afficher le résultat d'une requète SELECT
if (!$result = $pcache->query('SELECT forum *'))
{
   info('Erreur', $pcache->errno_text, __LINE__, __FILE__, $pcache->errno_query);
}
$data = $pcache->fetch_array($result);
printr($data);

// On libère la mémoire alouée pour ce résultat
$pcache->free_result($result);

// Une fonction utile pour parser des requète en évitant que des délimiteurs dans des valeurs gènent :
$sql_cache = 'CREATE table champs1 champs2 ; INSERT table FIELDS champs1 champs2 VALUES 12 \'Cool je suis une valeur ; qui dérange avec mes ; lol\'';
$ary = $pcache->explode_parser(';', $sql_cache);
printr($ary);


Pour toute question, optimisation ou autre n'hésitez pas (sur le forum).


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors