Je programme beaucoup en objet en PHP et j'essaie d'être le plus rigoureux possible. Seulement, je me heurte à un problème d'optimisation. En effet, si j'ai à récupérer une liste (qui peut être très longue) d'utilisateurs stockés en base par exemple, il est totalement exclu de les charger un à un comme ceci:
1 2 3
| foreach( $aIdentifiants as $iId ) {
$aUsers = new User( $iId );
} |
Sachant que le constructeur de User ira faire un SELECT dans la base.
Si j'ai 1000 utilisateurs à récupérer je vais lancer 1000 requêtes vers mon serveur SQL, c'est totalement délirant.
Donc je suis obligé de passer par des moyens détournés, du genre User::getUsersFromIdList( $aIdentifiants ) qui me créera autant d'utilisateurs avec une seule requête de type
$sql = "SELECT * FROM utilisateurs WHERE id IN (".implode(', ', $aIdentifiants).")"
Ca fonctionne, mais je n'aime pas cette solution.
En avez-vous d'autres ?
Partager