Quand un fichier .php est-il trop grand?

J’écris une classe PHP. Il existe actuellement 1 000 lignes de code et la taille du fichier est de 46 Ko. Ce n’est pas une taille folle, mais cela m’a amené à réfléchir.

Q: À quel moment la performance commence-t-elle à être affectée par la taille du fichier et / ou la quantité de code incluse dans le fichier PHP?

Pour PHP, il n’y a pas de différence notable (surtout si vous utilisez un cache d’opcode) s’il y a 10 fichiers par 100 lignes ou 1 avec 1000 lignes.

Mais du sharepoint vue de la maintenabilité, il serait préférable de diviser les responsabilités de classe en plusieurs.

Comme d’autres personnes l’ont suggéré, l’importance de la taille des fichiers doit être axée sur la lisibilité et la lisibilité du code.

Cependant, en ce qui concerne votre question initiale concernant la taille et les performances des fichiers PHP, cela dépend du type de performance requirejs. Pour le code PHP qui est exécuté rarement – tel qu’un programme PHP exécuté sur la machine du client via la ligne de commande, plutôt que par les visiteurs chargeant une page Web – les fichiers volumineux peuvent ne pas être perceptibles.

En revanche, dans les scénarios de haute performance, même un fichier PHP assez petit consumra des ressources système substantielles. Le problème général des performances PHP est ce qui a poussé Facebook à écrire sa propre machine virtuelle JIT pour exécuter du code PHP – car les performances autrefois acceptables avec PHP devenaient effrayantes à mesure que Facebook augmentait.

Ce qui précède est vrai pour l’optimisation en général – il est difficile de tracer une ligne entre les bonnes et les mauvaises performances sans avoir un contexte plus large pour les classer. Si vous êtes préoccupé par les performances de votre code PHP – qu’il soit lié à la taille du fichier ou non – je vous recommande d’utiliser un profileur PHP tel que Xdebug et de surveiller les ressources du système sur votre serveur.

EDIT, A la suggestion de Sébastien Renauld , j’ajoute les informations suivantes sur PHP et la mise en cache de l’opcode à ma réponse. Plutôt que de tout écrire moi-même, cependant, je voudrais souligner la réponse acceptée sur cette question de StackOverflow qui couvre presque le même sujet.

Je ne suis pas un expert en la matière, mais je dirai que vous ne rencontrerez probablement pas de problèmes tant que la taille de votre fichier ne représente pas une proportion significative de votre limite de mémoire PHP.

Et je vais vous dire que j’ai un gâchis de code dans un fichier PHP. Je viens de vérifier et il y a 11 487 lignes.

Ce fichier et un autre sur 2 056 lignes sont tous deux inclus dans chaque page de mon site de développement.

Je ne vois aucun problème apparent de performance.

Je devrais peut-être expliquer pourquoi j’ai un si gros fichier.

Je me concentre sur le fonctionnement de tout le programme. Et j’ai décidé d’utiliser ce fichier pour la plupart des classes afin de pouvoir le rechercher facilement et apporter des modifications dans n’importe quelle classe sans rechercher un fichier. Une fois que j’ai terminé, je diviserai toutes les classes en fichiers distincts et utiliserai le chargement automatique pour charger uniquement les classes requirejses. Ce ne sera probablement pas pour quelques semaines, mais quand je le ferai, je ferai des parsings avant et après pour voir s’il y a une différence de performance, mais je doute qu’il y en ait.

Actuellement, chaque page de mon site charge ce fichier. Je viens de charger la page d’accueil et selon Chrome, il a fallu 102ms. Une page qui utilise beaucoup de classes et qui fait un travail intensif sur les données et interagit avec MySQL a pris 279 ms.

Il me semble donc que la taille du fichier ne devient pas importante tant qu’elle n’est pas beaucoup plus grande que mes 11 487 lignes. Pour plus de rapidité, vous devez vous soucier davantage de l’optimisation de votre code.

Par exemple, je viens de poser une question sur le traitement de tableau dans lequel certaines solutions comportaient plus de 5 minutes, 30 secondes et quelques solutions à environ 280 ms. Ne vous inquiétez pas de la taille du fichier!