Comme vous l'avez très certainement remarqué ces derniers temps, le moteur de base de données SQLite voit sa popularité augmenter après l’annonce de son intégration dans la prochaine version du langage PHP attendue pour le courant de l’année.

Présentation

Ce moteur implémentant la majeure partie de la norme SQL92, fonctionne à la fois sous Windows et Linux avec simplement un système de fichiers. Ce système permet d'intégrer directement des bases de données dans son code PHP, sans avoir besoin d'installation complémentaire externe, c'est à dire sans avoir recours à un système client/serveur.

Outre de multiples intérêts d’utilisations (création de fonctions accessibles depuis les requêtes SQL, utilisation des triggers et de vues), l'énorme avantage réside dans la rapidité d'exécution des requêtes.
En effet, on observe dans un comparatif, SQLite/MySQL/PostgreSQL des performances d'exécution jusqu'à deux ou trois fois plus rapide sur différents types de requête (Etude de benchmark disponible sur le site officiel).

Exemples d'implémentation de SQLite avec PHP

Tout d'abord, deux modes d'ouverture de base ont été mise en place pour ce moteur grâce à la fonction sqlite_open(). Cette fonction peut être implémentée en utilisant un fichier ou tout simplement en montant notre base en mémoire.

La première des façons consiste en l'ouverture d'une base contenue dans un fichier. L'exploitation de la base de données contenue dans un simple fichier sur le serveur se fera en mode de lecture en valeur octale (0666 par exemple).

<?php
if($db = sqlite_open('mon_fichier', 0666, $mon_message_erreur)){ 
  #traitement#
}else{
  die ($mon_message_erreur);
}
?>

Si ce fichier n'existe pas sqlite_open() tentera de la créer (donc vérifier bien que vous avez les droits en écriture dans votre répertoire de travail). Si l'ouverture n'est pas réussie un message d'erreur est retourné ($mon_message_erreur).

La seconde façon d'exploiter une base consiste à allouer de la mémoire pour la stocker. En effet, celle ci sera mise en mémoire vive du serveur où est exécuté notre script. La base ainsi montée en mémoire n'aura comme durée de vie que la durée d'exécution du script l'appelant et l'utilisant.

<?php
$db = sqlite_open(:memory:, 0666, $mon_message_erreur);
?>

A noter l'existence de la fonction sqlite_popen() qui ouvre une connexion SQLite comme sqlite_open() mais de façon persistante.

Après ouverture de notre base, nous pouvons travailler dessus en faisant une extraction de données stockées dans un tableau par exemple.

<?php
$requete="SELECT * from table_alex Where Id_table_alex=1";
$result = sqlite_query($db,$requete);
  $tab= array();
  while ($row = sqlite_fetch_array($result)) {
    $tab[] = $row;
  }
?>

Une autre particularité de SQLite est la possibilité d'appeler des fonctions PHP à partir d'une requête.

<?php
function mafonction(&$variable){ 
  #traitement#
  return $variable; 
}

$requete="SELECT mafonction(a) from table_alex Where Id_table_alex=1";
?>

Perspectives

Pour conclure sur cette présentation du nouveau moteur de base de données intégré à PHP 5, on retiendra que celui ci apportera des fonctionnalités actuellement non disponibles dans les versions de MySQL (comme par exemple les triggers ou l'accessibilité de fonctions depuis les requêtes sql) mais qui le seront dans la version à venir de MySQL.

Je pense que l'utilisation de SQLite va être bénéfique pour des traitements qualifiés de "simples", qui utiliseront principalement sa rapidité d'exécution (gestion de panier sur un site marchand, gestion de session utilisateur, ...) mais il ne remplacera pas MySQL pour la gestion de bases plus conséquentes comme une gestion client ou un forum.

Documentations et téléchargements

Site Officiel Sqlite
Téléchargement du package Sqlite
Documentation PHP-rubrique sqlite
Exemple de classe de couche d'abstraction SQLite

A noter qu’il existe une application Web dédiée pour gérer les bases de données SQLite, phpSQLiteAdmin (comme phpMyadmin existe pour gérer les bases Mysql ou phpPgAdmin pour PostgreSql). Ce frontal encore "jeune" (disponible en version 0.1) ne bénéficie pas encore d'une documentation digne des autres frontaux célèbres.

phpSQLiteAdmin
Téléchargement de phpSQLiteAdmin