(13-07-2012, 02:43 PM)php_addict a écrit : Bonjour
pour mon projet je suis passé en contrôleur frontal MVC (procédural)
par sécurité j'inclus toutes les librairies, fonctions, etc au début de mon contrôleur basiquement tel que:
include('rep/fichier1.php')
include('rep/fichier2.php')
include('rep/fichier3.php')
une 60aine d'include donc qui prends pas mal de temps: 50ms sur mon pc et 100ms sur mon dédié avec APC cache opcode
j'ai testé tout un tas de truc et je n'arrive pas à réduire le temps de chargement des include
auriez-vous une idée? car 100ms c'est quand même bien long...
Quoi que tu fasses, que ce soit un autoload ou autre système, si ton code à besoin des ces 60 includes, alors ils seront faits. C'est logique et immuable, si tu as besoin du contenu de 60 fichiers il faut bien les inclure, non ?
Donc quoi que tu fasses, tes 100ms tu en as besoin, tu ne peux pas les réduire...
Donc tu te compliques pour rien.
Par contre, ça m'étonnerait que ton controlleur appelle des fonctions réparties dans 60 fichiers. Disons plutot que ton controlleur appelle des fontions réparties dans X fichiers, qui elle-mêmes appellent des fonctions réparties dans X^n fichiers, ce qui au final fait 60.
Donc si tu veux faire du procédural pur, fous des require_once dans les tous les fichiers qui appellent du code d'autres fichiers, de sorte que ton controlleur ne fasse de require que sur les X dont tu te sers directement. ce sera plus logique, plus facile à maintenir, et plus lent, hélàs. Maisça vaut le coup. dans tous les cas tes 100ms sont nécessaires.
la seule solution pour accélérer les includes c'est de modifier la façon dont PHP s'exécute, avec par exemple la solution que te propose Sephi. ça réduira également le parsing des fichiers qui, je pense et je peux me tromper, compte énormément dans le calcul des 100ms, plus que l'accès au disque.
Par contre, si tu inclus bourrinement tes 60 fichiers dans chaque controlleur pour n'en utiliser que les trois quarts, alors effectivement, utilises un système de chargement du code comme ça t'a été proposé.
Mais si ton réel problème est le temps de chargement (ouvrir fichier, parser fichier), réfléchis deux secondes, est-ce que le code à quoi que ce soit à voir avec ça ? non.