Re: Première version

Olivier Pascal <[email protected]> Tue, 30 Mar 2004 23:38:00 +0400
Newsgroups gmane.comp.web.blogv2.devel
Message-ID <[email protected]>
Bon j'ai compris ta méthode :-)

Le Mardi 30 Mars 2004 22:08, Eric Daspet a écrit :
> Imagines mes 20 modules. Dans l'idéal la classe du premier module aura
> besoin d'une lecture de rep, la classe du second aura besoin de 2, etc.
> On va avoir au minimum 1+2+3+4+5....+20 = 100 lectures de rep juste pour
> charger 1 classe par modules. Si on en charge plusieurs ou qu'on
> autorise les sous-rep dans les modules on va vite exploser.
> Si on rajoute la même chose pour les fichiers de conf, pour les data
> .... on va finir par faire plus de 300 accès fichiers juste pour
> afficher un article. Là ce n'est même plus de la perf, c'est carrément
> pour ne pas diminuer la durée de vie du disque ;)

Ah d'accord; peut-être que tu n'as pas bien compris le fonctionnement.
Lors de l'initialisation je crée en une seule fois une sorte d'index avec dans 
un tableau le nom de la classe associé à son chemin.
Controler => /lib/Controler.class.php
DataFile => /lib/stockage/DataFile.class.php
LogManager => /modules/Logs/lib/LogManager.class.php

Maintenant pour charger une DataFile, __autoload() charge le fichier associé à 
'DataFile' dans le tableau, soit /lib/stockage/DataFile.class.php.

Donc les répertoires sont parcourus une seule fois et non à chaque chargement 
d'une classe !

> Ceci dit la méthode prévue peut tout à fait gérer les sous dossiers, il
> suffit de faire explorer un peu plus loin à la génération. La seule
> différence réelle c'est que l'exploration n'aura lieu qu'une fois à la
> génération et plus pendant les exécutions.

Ok.

> > A ce momment là les notions de valeurs booléennes, d'options, indexs,
> > etc. ne servent plus à grand chose, autant utiliser en tout et pour tout
> > parse_ini_file() !
>
> Pourquoi ? le contenu est le même. Les options, les valeurs booléennes,
> les listes et le reste servent toujours. La seule différence est de
> savoir si on interprête une fois à la génération ou à chaque exécutions.

En te lisant j'ai cru que tu voulais lire directement dans le tableau 
associatif du cache. Soit pourquoi pas, je ne t'en veux pas ;-) surtout que 
ça ne m'a pas paru farfelu dans le sens où la seule inclusion d'une classe 
prend presque 10 fois plus de temps que le chargement du cache du fichier 
conf ... reste que si c'est gérable avec 1 fichier de conf au niveau global 
c'est ingérable avec 1 fichier par module.

Mais ta solution est bonne.

-- 
Olivier Pascal