Pour l'utilisation que je voulais en avoir je n'avais pas envie de me tourner vers des gros systèmes comme on en trouve déjà sur le net...
Et pis mince... Si je touche pas un clavier je deviens dingue alors autant la créer soit même !
Elle se base sur PDO pour Mysql.
Elle peut utiliser le plugin mysqlnd_qc pour la mise en cache ou bien un système de cache par fichier géré par la class.
Comme j'ai franchement échoué dans l'installation de mysqlnd_qc je me suis limité à la théorie de son utilisation (fort simple).
Je ne sais donc pas ce que cela vaut en terme de performance (mais ça peut pas être pire que sans !).
Vous trouverez la class ainsi qu'un fichier de démo sur le dépôt suivant :
https://github.com/xTG/Database
Je l'ai développé sur un serveur ayant PHP 5.4.16, je ne sais pas si elle tourne sur une version antérieure.
Un exemple de résultat d'utilisation sur une table contenant un champ incrémenté de 0 à 1999 :
Note : les tests de fetch depuis la RAM n'ont que peu d'intérêt d'utilisation.RAM = datas are fetched from the object.
Database = datas are fetched from the database.
Cache = datas are fetched from Mysqlnd_qc cache or from cutom file cache.
[10 fetch with no cache]
Normal query, retrieving from Database : 20000 datas fetched in 6.5 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.6 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.6 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.6 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.5 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.4 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.5 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.6 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.7 ms
Normal query, retrieving from Database : 20000 datas fetched in 5.7 ms
[10 fetch from object RAM]
No query, retrieved from RAM : 20000 datas fetched in 0.6 ms
No query, retrieved from RAM : 20000 datas fetched in 0.1 ms
No query, retrieved from RAM : 20000 datas fetched in 0.1 ms
No query, retrieved from RAM : 20000 datas fetched in 0 ms
No query, retrieved from RAM : 20000 datas fetched in 0 ms
No query, retrieved from RAM : 20000 datas fetched in 0.1 ms
No query, retrieved from RAM : 20000 datas fetched in 0.1 ms
No query, retrieved from RAM : 20000 datas fetched in 0 ms
No query, retrieved from RAM : 20000 datas fetched in 0.1 ms
No query, retrieved from RAM : 20000 datas fetched in 0.1 ms
[10 fetch from cache]
Retrieved from cache : 20000 datas fetched in 1.6 ms
Retrieved from cache : 20000 datas fetched in 1.6 ms
Retrieved from cache : 20000 datas fetched in 1.9 ms
Retrieved from cache : 20000 datas fetched in 2 ms
Retrieved from cache : 20000 datas fetched in 1.9 ms
Retrieved from cache : 20000 datas fetched in 1.9 ms
Retrieved from cache : 20000 datas fetched in 1.9 ms
Retrieved from cache : 20000 datas fetched in 1.9 ms
Retrieved from cache : 20000 datas fetched in 2 ms
Retrieved from cache : 20000 datas fetched in 1.9 ms
C'est le principe de parcourir deux fois le jeu de données sur le même script, chose qu'on ne fait que rarement.