PHP : include d'un fichier de constantes

Nouveau WRInaute
salut,

J'ai installé wamp5 et je constate un phénomène étrange avec les include de fichiers :

Je fais un include de plusieurs fichiers dans mon code:

Code:
    include("constants.inc.php");
    include("trace.inc.php");
    include("dal.inc.php");
    include("session.inc.php");
    include("calendar.inc.php");
    include("xajax.inc.php");
    include("uil.inc.php");
    include("error.inc.php");
    include("bll.inc.php");
    include("provider.inc.php");
    include("variables.inc.php");
    include("utils.inc.php");
    include("stats.inc.php");
    include("communication.inc.php");
    include("inscription.inc.php");

Il se trouve que si je renomme physiquement le premier fichier "constants.inc.php" en n'importe quoi d'autre, mon script s'exécute comme si rien n'avait été modifié ! Comme si constants.inc.php avait été mis en cache.

Vous avez déjà vu ça ? Mieux ! Vous avez une solution ?

Je précise que je ne constate ce problème qu'avec le premier fichier
 
Nouveau WRInaute
J'ai trouvé la cause de mon problème.

Il se trouve que le fichier constants.inc.php existait dans le répertoire racine ET dans le répertoire ou se trouve les autres includes. Du coup il prenait le premier qu'il trouvait.

Intéressant et ... résolu ! J'ai finalement supprimé celui se trouvant dans le répertoire racine, puisqu'il n'avait rien à y faire, le bougre :wink:
 
WRInaute passionné
Tu peux aussi utiliser include_once pour qu'il soit insérer qu'une seule fois, même si il est appelé plusieurs fois.

Ou alors require_once si le dit fichier est impérativement nécessaire au fonctionnement de ton site.
 
Nouveau WRInaute
Par contre en terme de performance pure, les include_once sont a déconseiller. Puisqu'il oblige php a consulté une variable contenant les fichiers déja inclus.

L'idéal est vraiment de savoir ou tu en est dans tes includes.
 
Nouveau WRInaute
Mertyl a dit:
Moi j'ai prit l'habitude de ne mettre que des requiere_once c'est une mauvaise habitude ?

oui et non, on parle d'un gain de quelques micro-seconde... si tu as 100 000 pages par mois, c'est pas un soucis dans mon cas c'est environ 1 000 000 par jours, donc la ca rentre en compte, et j'ai retirer tout les _once (include ou require)
 
Nouveau WRInaute
Dans tous les cas, faites attention à l'endroit où est localisé l'include en question par rapport au script qui l'appelle.

Dans mon cas :

folder "root" -- "constants.inc.php" est présent par erreur de manip
folder |_"library" -- "constants.inc.php" est également présent et est à sa place
folder |_"library" -- include.inc.php" appelle "constants.inc.php".

Dans mon cas, "include.inc.php" appelle le "constants.inc.php" qui se situe dans le root. cela ne me semblait pas logique jusqu'à ce que je lise la doc :
http://fr.php.net/include/

si ça peut aider un jour qqun
:)

A+
 
Discussions similaires
Haut