Maison outils de développement composer Guide d'optimisation des performances de chargement automatique du partage composer autoload

Guide d'optimisation des performances de chargement automatique du partage composer autoload

Aug 05, 2020 pm 01:10 PM
composer

La colonne tutorielle suivante de composer vous présentera le guide d'optimisation des performances de chargement automatique du compositeur. J'espère qu'il sera utile aux amis dans le besoin !

Guide d'optimisation des performances de chargement automatique du partage composer autoload

Le mécanisme de chargement automatique fourni par composer nous permet d'organiser très facilement le code et d'introduire de nouvelles bibliothèques de classes, mais il réduit également considérablement les performances du projet.

La principale raison pour laquelle le chargement automatique du compositeur est lent est due à la prise en charge de PSR-0 et PSR-4. Lorsque le chargeur obtient un nom de classe, il doit trouver l'emplacement du fichier de classe correspondant dans le système de fichiers, ce qui provoque beaucoup de problèmes de perte de performances, bien sûr, cela est toujours utile lorsque nous développons, afin que les nouveaux fichiers de classe que nous ajoutons puissent prendre effet immédiatement. Mais en mode production, nous souhaitons retrouver ces fichiers de classe et les charger le plus rapidement possible.

Par conséquent, composer propose plusieurs stratégies d'optimisation. Ces stratégies d'optimisation sont expliquées ci-dessous.

Optimisation de niveau 1 : générer un classmap

Comment exécuter :

Exécuter la commandecomposer dump-autoload -o (-o est équivalent à --optimize)

Principe :

L'essence de cette commande est de convertir les règles PSR-4/PSR-0 en règles de classmap Parce que le classmap contient. la correspondance entre tous les noms de classe et les chemins de fichiers de classe, le chargeur n'a plus besoin de rechercher des fichiers dans le système de fichiers. Le chemin d'accès au fichier de classe peut être trouvé directement à partir du classmap.

Notes

Il est recommandé d'activer opcache, ce qui accélérera considérablement le chargement des classes.

php5.5 et les versions ultérieures sont livrées avec opcache par défaut.

Cette commande ne prend pas en compte la situation où la classe cible n'est pas trouvée dans le classmap. Lorsque le chargeur ne peut pas trouver la classe cible, il ira quand même au système de fichiers selon les règles de PSR-. Recherche 4/PSR-0

Optimisation de deuxième niveau (Niveau-2/A) : carte de classe faisant autorité (Authoritative)

Exécuter la commande :

Exécuter la commandecomposer dump-autoload -a (-a est équivalent à --classmap-authoritative)

Principe

L'exécution implicite de cette commande exécute également le niveau 1 commande, c'est-à-dire que le classmap est également généré. La différence est que lorsque le chargeur ne peut pas trouver la classe cible dans le classmap, il ne recherchera pas dans le système de fichiers (c'est-à-dire qu'il croit implicitement que toutes les classes légales se trouvent dans le classmap). , et il n'y aura pas d'Autres classes, sauf appel illégal)

Notes

Si votre projet génère des classes au moment de l'exécution, ces nouvelles classes ne seront pas trouvées grâce à cette optimisation stratégie Classe générée.

Optimisation de deuxième niveau (niveau 2/B) : utiliser le cache APCu

Exécuter la commande :

Exécuter la commande composer dump-autoload --apcu

Principe :

L'utilisation de cette stratégie nécessite l'installation de l'extension apcu.

apcu peut être compris comme un morceau de mémoire et peut être partagé entre plusieurs processus.

Cette stratégie consiste à stocker le résultat trouvé dans le système de fichiers dans la mémoire partagée lorsque la classe cible n'est pas trouvée dans la carte de classe au niveau 1 lors de la prochaine recherche, elle peut être directement récupérée de la mémoire. . Revenez sans avoir à chercher à nouveau dans le système de fichiers.

Dans l'environnement de production, cette stratégie est généralement utilisée avec Level-1. Exécutez composer dump-autoload -o --apcu De cette façon, même si une nouvelle classe est générée dans l'environnement de production, uniquement. le système de fichiers est nécessaire. Il peut être mis en cache après une seule recherche, ce qui compense les lacunes du niveau 2/A.

Comment choisir une stratégie d'optimisation ?

Vous devez choisir une stratégie basée sur la situation réelle de votre projet. Si votre projet ne génère pas de fichiers de classe lors de son exécution et nécessite le chargement automatique du compositeur, utilisez le niveau 2/A. utiliser le niveau 1 et le niveau 2/B est un meilleur choix.

Quelques conseils

  • L'optimisation de niveau 2 est essentiellement un complément à l'optimisation de niveau 1, et le niveau 2/A est principalement un décision Lorsque la classe cible n'est pas trouvée dans le classmap, s'il faut continuer à la rechercher, Level-2/B fournit principalement un mécanisme de mise en cache. Lorsque la classe cible n'est pas trouvée dans le classmap, il mettra en cache le chemin du fichier trouvé dans le classmap. système de fichiers. , accélérant les recherches ultérieures.

  • Lorsque le niveau 2/A est exécuté, cela signifie que s'il ne peut pas être trouvé dans la carte de classe, il ne continuera pas la recherche. À ce moment, le niveau 2/B le fera. ne prend pas effet.

  • Quelle que soit la situation, il est recommandé d'activer opcache. Cela améliorera considérablement la vitesse de chargement des cours. J'ai mesuré visuellement l'amélioration des performances d'au moins 10 fois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Fonctionnalités avancées de Composer : alias, scripts et résolution de conflits Fonctionnalités avancées de Composer : alias, scripts et résolution de conflits Jun 03, 2024 pm 12:37 PM

Composer fournit des fonctionnalités avancées, notamment : 1. Alias : définissez des noms pratiques pour les packages pour référence répétée ; 2. Scripts : exécutez des commandes personnalisées lors de l'installation/mise à jour de packages, utilisées pour créer des tables de base de données ou compiler des ressources ; 3. Résolution de conflits : utilisez des règles de priorité ; , les contraintes de satisfaction et les alias de package résolvent les différentes exigences de plusieurs packages pour la même version de dépendance afin d'éviter les conflits d'installation.

Quelles sont les méthodes courantes pour convertir des tableaux en objets en PHP ? Quelles sont les méthodes courantes pour convertir des tableaux en objets en PHP ? Apr 28, 2024 pm 10:54 PM

Comment convertir un tableau PHP en objet : utilisez la classe stdClass, utilisez la fonction json_decode(), utilisez une bibliothèque tierce (telle que la classe ArrayObject, la bibliothèque Hydrator)

Développement et exploitation agiles de la conteneurisation de microservices PHP Développement et exploitation agiles de la conteneurisation de microservices PHP May 08, 2024 pm 02:21 PM

Réponse : Les microservices PHP sont déployés avec HelmCharts pour un développement agile et conteneurisés avec DockerContainer pour l'isolation et l'évolutivité. Description détaillée : utilisez HelmCharts pour déployer automatiquement des microservices PHP afin de réaliser un développement agile. Les images Docker permettent une itération rapide et un contrôle de version des microservices. Le standard DockerContainer isole les microservices et Kubernetes gère la disponibilité et l'évolutivité des conteneurs. Utilisez Prometheus et Grafana pour surveiller les performances et l'état des microservices, et créer des alarmes et des mécanismes de réparation automatiques.

Contrôle de version et collaboration du code PHP Contrôle de version et collaboration du code PHP May 07, 2024 am 08:54 AM

Contrôle de version du code PHP : Il existe deux systèmes de contrôle de version (VCS) couramment utilisés dans le développement PHP : Git : VCS distribué, où les développeurs stockent localement des copies de la base de code pour faciliter la collaboration et le travail hors ligne. Subversion : VCS centralisé, la seule copie de la base de code est stockée sur un serveur central, offrant plus de contrôle. VCS aide les équipes à suivre les modifications, à collaborer et à revenir aux versions antérieures.

Le rôle de PHP CI/CD dans les projets DevOps Le rôle de PHP CI/CD dans les projets DevOps May 08, 2024 pm 09:09 PM

PHPCI/CD est une pratique clé dans les projets DevOps qui automatise les processus de création, de test et de déploiement, améliorant ainsi l'efficacité du développement et la qualité des logiciels. Un pipeline PHPCI/CD typique comprend les étapes suivantes : 1) Intégration continue : chaque fois que le code change, le code est automatiquement construit et testé. 2) Déploiement continu : accélérez la livraison en déployant automatiquement le code testé et intégré dans l'environnement de production. En mettant en œuvre le pipeline PHPCI/CD, vous pouvez augmenter l’efficacité du développement, améliorer la qualité des logiciels, réduire les délais de mise sur le marché et augmenter la fiabilité.

Comment utiliser le cache Redis dans la pagination des tableaux PHP ? Comment utiliser le cache Redis dans la pagination des tableaux PHP ? May 01, 2024 am 10:48 AM

L'utilisation du cache Redis peut considérablement optimiser les performances de la pagination du tableau PHP. Cela peut être réalisé en suivant les étapes suivantes : Installez le client Redis. Connectez-vous au serveur Redis. Créez des données de cache et stockez chaque page de données dans un hachage Redis avec la clé « page : {page_number} ». Récupérez les données du cache et évitez les opérations coûteuses sur les grandes baies.

Comment utiliser PHP CI/CD pour itérer rapidement ? Comment utiliser PHP CI/CD pour itérer rapidement ? May 08, 2024 pm 10:15 PM

Réponse : Utilisez PHPCI/CD pour réaliser une itération rapide, y compris la configuration de pipelines CI/CD, de tests automatisés et de processus de déploiement. Configurer un pipeline CI/CD : sélectionnez un outil CI/CD, configurez le référentiel de code et définissez le pipeline de build. Tests automatisés : rédigez des tests unitaires et d'intégration et utilisez des frameworks de test pour simplifier les tests. Cas pratique : Utilisation de TravisCI : Installez TravisCI, définissez le pipeline, activez le pipeline et visualisez les résultats. Mettez en œuvre la livraison continue : sélectionnez les outils de déploiement, définissez les pipelines de déploiement et automatisez le déploiement. Avantages : améliorez l’efficacité du développement, réduisez les erreurs et raccourcissez les délais de livraison.

Technologie de visualisation de la structure des données PHP Technologie de visualisation de la structure des données PHP May 07, 2024 pm 06:06 PM

Il existe trois technologies principales pour visualiser les structures de données en PHP : Graphviz : un outil open source capable de créer des représentations graphiques telles que des graphiques, des graphiques acycliques dirigés et des arbres de décision. D3.js : bibliothèque JavaScript pour créer des visualisations interactives basées sur les données, générer du HTML et des données à partir de PHP, puis les visualiser côté client à l'aide de D3.js. ASCIIFlow : une bibliothèque pour créer une représentation textuelle de diagrammes de flux de données, adaptée à la visualisation de processus et d'algorithmes.

See all articles