Bonjour,

dans un projet j'ai une table sql de ce genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
coucou(id int,nb int,...,...,...)
le champ id est une clé primaire.
Cette table contient des dizaines de milliers de lignes.
J'ai besoin d'y acceder souvent, le plus rapidement possible, desfois pour obtenir une seule ligne, desfois des milliers ...

Je peux faire une "requête" sur ma table, quelque chose du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select * from coucou where id=5
Ou alors je pensais, vu que certains champs de ma table sont fixes (ne changent jamais de valeur) (c'est le cas de "id" et "nb"), je pensais les sauvegarder dans un fichier php.

table_coucou.php:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<?php
// $table[<id>] = <nb>; 
$table[1] = 5;
$table[2] = 25; 
$table[3] = 35;  
$table[4] = 45; 
 
...
Ainsi si je veux acceder au champ "nb" de la ligne ayant l'id de valeur 5, j'ai juste à faire :

script.php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
include("table_coucou.php");
if(isset($table[5])) 
{
    echo $table[5];
}
J'ai pensé à ca car j'ai besoin de quelque chose de rapide, accèder au i-ème élément d'un tableau me semble plus rapide que séléctionner un champ d'un enregistrement précis d'une table d'une base de donnée ?

Mais après je me suis posé une question,
il va falloir que php stocke tout mon tableau $table en mémoire
Imaginons que $table prend en mémoire 10 mo.
C'est faisable de charger une fois 10 mo ...

Mais si 100 clients executent le script script.php sur le même serveur en même temps, le tableau $table est chargé 100 fois en mémoire ? soit 100*10 = 1 go nécessaire, et la je vais avoir des petits problèmes ?

Comment faire en sorte de charger ce tableau qu'une seule fois, même s'il y a 100 clients qui ont besoin d'y avoir accès en même temps ?

Ou bien j'oublie ce 'système de cache' et je conserve uniquement ma base de donnée ?

Merci