2010-12-01 6 views
12

Duplicate possible:
Why is require_once so bad to use?PHP include vs include_once (vitesse)

Je l'ai lu quelque part que les déclarations include_once et require_once en PHP ont été plus lents que leurs homologues non une fois. Est-ce un ralentissement important? Y a-t-il eu des tests ou des études à ce sujet, et a-t-il changé dans les versions récentes de PHP?

+2

question répétée - http://stackoverflow.com/questions/186338/why-is-require-once-so-bad-to-use – ajreal

+1

Pourquoi la baisse? – Cybrix

Répondre

14

L'augmentation de la vitesse est minimale et intervient lorsqu'un contrôle de référence est effectué pour empêcher la duplication du code. L'appendice 'une fois' est une mesure préventive contre le même code en cours d'exécution/inclus deux fois. Cette vérification est effectuée à un coût de vitesse minime.

Si jamais vous utilisez une instance où vous utilisez _once, pourquoi le code est-il vraiment construit de la manière la plus efficace? Il est souvent préférable d'enlever le besoin de compter sur _once et de produire un meilleur code (plus facile à dire qu'à faire!).

Voir:

http://forums.digitalpoint.com/showthread.php?t=1693837

http://www.phpbb.com/community/viewtopic.php?f=71&t=565933

http://www.sitepoint.com/forums/showthread.php?t=269085

http://www.quora.com/What-is-the-difference-between-functions-include-and-include_once-in-PHP

3

Le include_once et les fonctions require_once sont plus lentes que comprennent et nécessitent, tout simplement parce qu'ils gardent la trace des fichiers qui ont déjà été n inclus, pour éviter de les inclure plus d'une fois.

Mais cela ne devrait pas importer du tout, car il existe probablement plusieurs façons d'optimiser votre application, beaucoup plus efficace que celle-ci.

+1

Juste pour clarifier - les fonctions 'include_once' et' require_once' ne sont que plus lentes quand le script est exécuté * exactement * une fois. Si un script particulier 'foo.php' est inclus via' include', alors il est exécuté à chaque fois. Si elle est incluse via 'include_once', alors il y a un coût de vitesse minimal à vérifier si elle a été exécutée, mais à chaque exécution sauf la première, le script n'est pas exécuté. – jvriesem