11
votes

Y compris les fichiers PHP inutiles ralentissez-vous?

La question pourrait inviter certaines personnes à dire un oui ou non définitif presque immédiatement, mais veuillez lire sur ...

J'ai un site Web simple où il y a 30 pages PHP (chacune dispose d'un code secondaire PHP Server + HTML / CSS, etc.). Aucune hiérarchie compliquée, rien. Seulement 30 pages.

Je dispose également d'un ensemble de fichiers PHP purement back-end-end - ceux qui ont un code permettant de sauver des trucs à la base de données, de l'authentification, d'envoyer des courriels, des commandes de traitement etc. Celles-ci seront réutilisées par ces 30 pages de contenu.

J'ai un fichier PHP maître sur lequel j'envoie un paramètre. Ceci spécifie lequel de ces 30 fichiers est nécessaire et comprend la page de contenu appropriée. Mais chacun de ceux-ci peut nécessiter un nombre variable de fichiers back-end à inclure. Par exemple, une page de contenu peut ne rien nécessiter de back-end, tandis qu'un autre peut avoir besoin du code de base de données, tandis que quelque chose d'autre pourrait avoir besoin du courrier électronique, de la base de données et du code d'authentification, etc.

Je suppose que quelle que soit la page de back-end, peut être incluse dans la page de contenu appropriée, mais une petite modification du chemin et je dois modifier des dizaines de fichiers. Il sera trop lourd pour vérifier quelle page de contenu est demandée (type de chose de commutation) et inclure les fichiers back-ends appropriés dans le fichier PHP principal. Encore une fois, je dois faire de nombreux changements si un seul chemin change.

Être paresseux, j'ai inclus tous les fichiers de back-end dans le fichier maître afin qu'aucune page de contenu ne puisse demander quelque chose qui n'est pas inclus.

première question - est-ce une bonne pratique? Si cela est fait par quiconque du tout.

Deuxièmement, il y aura un problème de performance ou tout type de problème due à moi, y compris tous les dossiers de fond, que ce soit si nécessaire?

Modifier

Le site Web se situe entre 3000 et 4 000 visites par jour.


1 commentaires

Vous pouvez facilement répondre à la deuxième question en exécutant vous-même des tests de performance simples, comme la mesure de l'exécution dans les différentes configurations ...


9 Réponses :


1
votes

Cela ralentira votre site, mais probablement pas par une quantité notable. Cela ne semble pas être un moyen sain d'organiser votre demande, cependant; Je repenserais ça. Essayez de séparer la logique d'application (par exemple, la plupart du code côté serveur) de la couche de présentation (par exemple, le HTML / CSS).


1 commentaires

Même si je fais cela, il y a ce problème à inclure plusieurs fichiers partagés. J'espère avoir de sens. Supposons que je supplie des trucs de présentation. Mais la logique des entreprises aura son propre ensemble de fichiers PHP. Tous ces fichiers logiques de Biz nécessiteront un nombre variable de fichiers PHP courants. Le problème même inclure revient. Et si je réorganise / ajoutez / supprimez / fusionner des fichiers courants? Je dois aller à chaque fichier PHP de BIZ logique et modifier les chemins inclus. Si j'ai une bonne idée du succès de la performance, je peux faire un choix.



7
votes

Vous devriez comparer. Temps l'exécution de la même page avec différentes inclres. Mais je suppose que cela ne fera pas beaucoup de différence avec 30 fichiers.

Mais vous pouvez vous épargner de l'heure et vous pouvez simplement activer APC dans le php.ini (c'est une extension pecl, vous devez donc Installation IT ). Il mettra en cache le contenu analysé de vos fichiers, ce qui accélérera les choses de manière significative.

BTW: Il n'y a rien de mal à la paresse, c'est même un Virtue ;)


2 commentaires

Bonjour, merci d'avoir suggéré que l'APC chose :) On dirait que ça va être utile si Je tiens à cette façon d'inclure des fichiers.


Il suffit de faire des recherches sur APC et on dirait que c'est ce dont j'ai besoin. J'ai installé APC. Avoir à profil avec et sans elle. Mais de ce que les gens disent, c'est une bonne chose d'avoir des différences de performance notable.



1
votes

Ce n'est pas une mauvaise pratique si les fichiers sont petits et ne contiennent que définition et paramètres. S'ils exécutent réellement le code ou extrêmement volumineux, cela entraînera une question de performance. Maintenant, si votre site a 3 visiteurs une heure - qui se soucie, si vous avez 30000 ... C'est un autre problème, et vous devez travailler plus fort pour minimiser cela.


0 commentaires

-1
votes

Je vis par "inclure le moins possible, autant que possible", donc je n'inclut que mon traitement de configuration et de session pour tout, puis que chaque page inclut simplement ce dont ils ont besoin d'utiliser un chemin d'accès inclus dans la configuration include. Pour les modifications de chemin, vous devez toujours simplement changer un fichier.

Si vous incluez tout ce que le ralentissement ne sera pas perceptible tant que vous obtenez beaucoup de hits de page (plusieurs hits par seconde), donc dans votre cas, incluant tout ce qui pourrait être correct.


0 commentaires

0
votes

Vous pouvez migiter certains des inconvénients de la compilation de code PHP en utilisant xcache . Ce module PHP mettra en cache le code PHP qui réduit la compilation du temps et des performances.


0 commentaires

4
votes

Si votre site est orienté objet, je vous recommande d'utiliser AUTO-Loading ( http://php.net/manual/fr/language.oop5.AutoLoad.php ).

Ceci utilise une méthode magique (__AutoLoad) pour rechercher une classe si nécessaire (c'est paresseux, tout comme vous!), Donc, si une page particulière n'a pas besoin de toutes les classes, il n'a pas besoin de les obtenir!

Encore une fois, cependant, cela dépend de si elle est orientée objet ou non ...


1 commentaires

Bien que j'utilise AutoLoad tout le temps (c'est génial), c'est un mauvais conseil lorsque la vitesse est un problème. L'autoload est bien plus lent que tout compris, et même encore plus lentement lorsque les choses sont sélectivement incluses manuellement. Enfin, c'est une mauvaise pratique d'utiliser __AutoLoad. Utilisez plutôt Spl_autoload à la place.



0
votes

Considérant la taille de votre site Web; Si vous n'avez pas remarqué un ralentissement, pourquoi essayer de le réparer?

En ce qui concerne les plus grands sites, la première chose à faire est d'installer APC. Même si votre méthode actuelle d'inclusion de fichiers pourrait ne pas bénéficier autant d'APC que possible, APC fera toujours une offre d'emploi extraordinaire.

Si la vitesse de réponse est toujours problématique, vous devez envisager, y compris les tous vos fichiers . APC conservera une version mise en cache de vos sources de mémoire en mémoire, mais ne peut que le faire bien s'il y a aucun conditionnel inclut .

Seulement lorsque votre application PHP est à une taille où l'épuisement de la mémoire est un risque important (notez que la plupart des sites Web de grande taille ne sont pas le goulot d'étranglement), vous souhaiterez peut-être contenir des parties de votre application.

rasmus lerdorf (l'homme derrière php) est d'accord: http://pooteeweet.org/blog/538


2 commentaires

Pour répondre à la question de votre première ligne - si je suis au cou de cette méthode, et Marketing retire un miracle, puis le site Web obtient 50000 visites par jour, je serai en difficulté.


500000 visites ne sont toujours pas une cause de préoccupation. Je suggère de passer des temps sur des choses telles que la configuration WebServer et les requêtes SQL dans ce cas.



0
votes

Comme d'autres l'ont dit, il ne devrait pas ralentir beaucoup les choses, mais ce n'est pas «idéal».

Si le problème principal est que vous êtes trop paresseux pour aller changer les chemins pour tous les fichiers inclus (si Le chemin doit être mis à jour à l'avenir). Ensuite, vous pouvez utiliser une constante pour définir le chemin dans votre fichier principal et utiliser la constante à tout moment, vous devez inclure / besoin d'un fichier. xxx

de cette façon si le chemin changements, il vous suffit de modifier une ligne de code.


0 commentaires

0
votes

Cela ralentira en effet votre site Web. La plupart en raison de la lente lente relative et du traitement de PHP. Plus vous souhaitez inclure de code, plus l'application sera plus lente.


0 commentaires