JeuWeb - Crée ton jeu par navigateur
optimisation des include en PHP ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : optimisation des include en PHP ? (/showthread.php?tid=6257)

Pages : 1 2


optimisation des include en PHP ? - php_addict - 13-07-2012

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...


RE: optimisation des include en PHP ? - Argorate - 13-07-2012

Quel intérêt de charger toutes tes bibliothèques de fonctions?
Inclus que celles dont tu as besoin et que quand tu en as besoin, ça ira déjà mieux non? Smile

PS: pourquoi include et pas require?


RE: optimisation des include en PHP ? - Sephi-Chan - 13-07-2012

Je suppose que tu devrais servir ton jeu via un système basé sur des workers (comme PHP FPM) plutôt qu'avec mod_php. Cela permettrait à ces workers de charger tout ce dont tu as besoin à l'avance, et ainsi optimiser le temps de réponse.

Hélas, je n'ai pas d'expérience de cette architecture avec PHP (et encore moins from scratch).


RE: optimisation des include en PHP ? - Marc15 - 13-07-2012

(13-07-2012, 04:53 PM)Argorate a écrit : Quel intérêt de charger toutes tes bibliothèques de fonctions?
Inclus que celles dont tu as besoin et que quand tu en as besoin, ça ira déjà mieux non? Smile

PS: pourquoi include et pas require?
Ça ne donne pas du code très propre...

Au milieu de la page tu as besoin d'une classe... comment fais-tu pour savoir si tu l'as déjà inclus, vas-tu l'inclure deux fois?




RE: optimisation des include en PHP ? - Astarion - 13-07-2012

Si tu as un code bien structuré, un bon __autoload peut faire l'affaire pour l'appel d'objet !


RE: optimisation des include en PHP ? - Argorate - 13-07-2012

Exactement... j'ai un autoload pour les classes, et ô miracle il existe un truc génial en php: "_once"

donc je suis sur d'inclure qu'une fois mes fichiers (et autres que les classes puisque comme déjà dit, la fonction "magic" php __autoload() règle déjà le problème Wink


RE: optimisation des include en PHP ? - archANJS - 13-07-2012

Charge les fichiers dont tu as absolument besoin au départ (dans le core de ton application), puis charge les autres fichiers au gré de tes besoins (dans les contrôleurs).

Au besoin crée-toi une fonction load et deux classes: Loader et Autoloader. Le tout dans un fichier que tu requières au tout début (dans le core).

Ainsi les fichiers essentiels sont chargés automatiquement par le système (via une liste envoyée à l'Autoloader). Tu n'auras qu'à appeler ta fonction load (qui appelle elle-même la classe Loader et vérifie si ce que tu requières est déjà inclus ou non) pour charger les librairies que tu as besoin au fur et à mesure dans tes contrôleurs.

(C'est selon moi la solution la plus éprouvée. C'est d'ailleurs celle qu'utilise la plupart (tous?) les framework PHP que je connaisse)




RE: optimisation des include en PHP ? - php_addict - 13-07-2012

(13-07-2012, 06:32 PM)Argorate a écrit : Exactement... j'ai un autoload pour les classes, et ô miracle il existe un truc génial en php: "_once"

donc je suis sur d'inclure qu'une fois mes fichiers

Bôôôf...tu veut dire que ca te permet des erreurs dans l'architecture de ton code? je préfère pas personnellement...

(13-07-2012, 06:47 PM)archANJS a écrit : Charge les fichiers dont tu as absolument besoin au départ (dans le core de ton application), puis charge les autres fichiers au gré de tes besoins (dans les contrôleurs).

Oui je pense que c'est que je vais faire...je ne peut pas me servir d'__autoload je suis en procédural, j'ai beau eu essayé la poo j'accroche pas pour le moment...mais c'est un autre sujet on va pas en parler ici...




RE: optimisation des include en PHP ? - Argorate - 13-07-2012

Non, un require a une bonne raison d’être, moi j'utilise des require pour les fichiers nécessaires. (donc oui, s'il n'y sont pas sa fait une erreur, mais de toute manière s'il n'y sont pas alors que j'en ai besoin, ça créera d'autres erreur (et des fois elles sont plus subtile a repérer, alors autant se prendre une bonne erreur qui bloque plutôt que de laisser faire n'importe quoi). Et a terme, ton applis bug pas (pas sur ça du moins), les fichiers une fois qu'ils existent et que t'as reglé le probleme du path, tu n'as plus jamais de problème.

Les include c'est quand tu veux inclure une page dont tu n'es pas sur de l’existence (j'en utilise pour mes helper par exemple, qui porte par convention le même nom que la page appelé, mais toute les pages appelé n'ont pas leur helper, du coup l'include est utile dans ce cas précis).

Sinon, si tu fais pas d'objet, tu n'as pas besoin d'autoload par définition, donc ce n'est pas un problème.
Par contre inclure toutes ces fonctions a chaque requête (que se soi une simple connexion/déconnexion ou afficher la page de contact), je trouve pas ça très pertinent... tu bouf des ressources et du temps d'exe réellement pour que dal ^^


RE: optimisation des include en PHP ? - Sephi-Chan - 13-07-2012

Je suis déjà fan de ce topic.