Maison  >  Article  >  développement back-end  >  Réglage de la configuration de php.ini

Réglage de la configuration de php.ini

不言
不言original
2018-04-26 11:21:131592parcourir

Le contenu de cet article concerne le réglage de la configuration de php.ini, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Le PHP installé par défaut est comme la moyenne. le costume que vous achetez dans un grand magasin peut vous aller bien, mais il n'est pas parfait. Tuned PHP est comme une combinaison sur mesure qui correspond à vos mesures exactes. Cependant, il convient de noter que le réglage de PHP n'est qu'une mesure visant à améliorer les performances et l'efficacité de PHP, et ne peut pas corriger un code médiocre et des appels d'API qui ne répondent pas.

Fichier php.ini

L'interpréteur PHP est configuré et réglé dans le fichier php.ini L'emplacement de ce fichier est différent selon les systèmes d'exploitation, et généralement la ligne de commande correspond à <.> et les fichiers php.ini correspondants pour PHP-FPM sont distincts. Ici nous supposons que le php.ini correspondant à PHP-FPM est configuré, mais les mesures d'optimisation décrites ci-dessous s'appliquent à tous les php.ini. php.ini

Remarque : nous devons d'abord utiliser l'outil PHP Iniscan pour analyser php.ini afin de vérifier que les meilleures pratiques de sécurité sont utilisées.

Mémoire

Lors de l'exécution de PHP, vous devez vous soucier de la quantité de mémoire utilisée par chaque processus PHP. Le paramètre

dans php.ini est utilisé pour définir le système qu'un processus utilise. un seul processus PHP peut utiliser. memory_limit

La valeur par défaut de ce paramètre est

, ce qui peut convenir à la plupart des applications PHP de petite et moyenne taille. Cependant, si vous exécutez une application micro-PHP, vous pouvez réduire cette valeur pour économiser. ressources système, et vice versa, vous pouvez augmenter cette valeur si vous exécutez une application PHP gourmande en mémoire. La taille de cette valeur est déterminée par la mémoire système disponible. Déterminer la quantité de valeur à allouer à PHP est un art. Lorsqu'il s'agit de décider de la quantité de mémoire à allouer à PHP et du nombre de processus PHP-FPM qu'il peut se permettre, cela peut être jugé en fonction. sur les informations dimensionnelles suivantes : 128M


  • Combien de mémoire peut être allouée à PHP au total ? Prenons l'exemple d'un VPS avec 2 Go de mémoire. Cet appareil peut également exécuter d'autres processus, tels que MySQL, Nginx, etc., il convient donc de laisser 512 Mo pour PHP.

  • Combien de mémoire chaque processus PHP consomme-t-il en moyenne ? Pour surveiller l'utilisation de la mémoire du processus, vous pouvez utiliser la commande de ligne de commande top, ou vous pouvez appeler la fonction

    dans un script PHP. Quelle que soit la méthode utilisée, vous devez exécuter le même script plusieurs fois, puis. Prenez la consommation moyenne de mémoire. memory_get_peak_usage()

  • Combien de processus PHP-FPM pouvez-vous vous permettre ? Supposons que j'alloue 512 Mo de mémoire à PHP et que chaque processus PHP consomme en moyenne 15 Mo de mémoire, je peux alors me permettre 34 processus PHP-FPM.

  • Les ressources système sont-elles suffisantes ? Enfin, vous devez confirmer qu'il existe suffisamment de ressources système pour exécuter l'application PHP et gérer le trafic attendu.


Remarque : nous devons utiliser Apache Bench ou Siege pour tester l'application PHP dans des conditions similaires à celles de l'environnement de production afin de déterminer si l'environnement de production dispose de ressources suffisantes. Disponible.

Zend OPcache

Après avoir déterminé la quantité de mémoire à allouer, vous pouvez configurer l'extension Zend OPcache de PHP Pour des informations détaillées sur cette extension, veuillez vous référer à cet article : http://. laravelacademy .org/post/4396.html.

PHP 5.5.0+ a cette extension intégrée. Voici les paramètres utilisés pour configurer et optimiser l'extension Zend OPcache dans le fichier php.ini :

    opcache.memory_consumption = 64 : La mémoire allouée pour le cache des opcodes (l'unité est Mo). La mémoire allouée doit pouvoir sauvegarder les opcodes compilés par tous les scripts PHP de l'application. Cette valeur peut être définie sur différentes tailles selon les. taille de la demande.
  • opcache.interned_strings_buffer = 16 : La quantité de mémoire utilisée pour stocker les chaînes résidentes (l'unité est Mo). Qu'est-ce qu'une chaîne résidente ? En coulisses, l'interpréteur PHP trouvera plusieurs instances de la même chaîne et enregistrera la chaîne en mémoire. Si la même chaîne est utilisée à nouveau, l'interpréteur PHP utilisera un pointeur. Le but est d'économiser de la mémoire. Par défaut, les chaînes résidentes PHP seront isolées dans chaque processus PHP. Ce paramètre permet au pool de processus PHP-FPM de stocker toutes les chaînes résidentes du processus dans un tampon partagé afin qu'elles puissent être traitées dans le pool de processus PHP-FPM. sont référencés entre plusieurs processus, ce qui économise plus de mémoire.
  • opcache.max_accelerated_files = 4000 : Le nombre maximum de scripts PHP pouvant être stockés dans le cache opcode. La plage de cette valeur est comprise entre 2000 et 100000. Cette valeur doit être supérieure à. que dans les applications PHP, le nombre de fichiers est important.
  • opcache.validate_timestamps = 1 : Lorsque la valeur de ce paramètre est 1, PHP vérifiera si le contenu du script PHP a changé après un certain temps. L'intervalle de temps de vérification est. défini par opcache.revalidate_freq spécifié. Si la valeur de ce paramètre est 0, PHP ne vérifiera pas si le contenu du script PHP a changé et nous devons nous-mêmes effacer les opcodes mis en cache. Il est recommandé de le définir sur 1 dans l'environnement de développement et sur 0 dans l'environnement de production.
  • opcache.revalidate_freq = 0 : Définissez la fréquence (en secondes) pour vérifier si le contenu du script PHP a changé. La signification de la valeur 0 seconde est que ce n'est que lorsque opcache.validate_timestamps est défini sur 1 que le fichier PHP sera revalidé à chaque requête. Par conséquent, dans l'environnement de développement, le fichier PHP sera revalidé à chaque fois, mais. pas dans l’environnement de production.

  • opcache.fast_shutdown = 1 : Ce paramètre permet à l'opcode d'utiliser une étape d'arrêt plus rapide, laissant la destruction des objets et la libération de mémoire au gestionnaire de mémoire de Zend Engine.

Téléchargement de fichiers

Si votre application autorise le téléchargement de fichiers, il est préférable de définir la taille maximale du fichier pouvant être téléchargé. De plus, il est préférable de définir le nombre maximum de fichiers pouvant être téléchargés en même temps :

file_uploads = 1upload_max_filesize = 10Mmax_file_uploads = 3
  • 1

  • 2

  • 3

Par défaut, PHP permet de télécharger 20 fichiers en une seule requête. Le fichier maximum téléchargé est de 2 Mo. Ici, je. définissez-le sur unique. Seuls 3 fichiers peuvent être téléchargés par requête, et chaque fichier peut atteindre 10 Mo. Ne définissez pas cette valeur trop grande, sinon un délai d'attente se produira.

Remarque : Si vous devez télécharger des fichiers volumineux, la configuration du serveur Web doit être ajustée en conséquence. En plus de le définir dans php.ini, ajustez le paramètre client_max_body_size dans la configuration de l'hôte virtuel Nginx.

Durée d'exécution maximale

max_execution_time dans le fichier php.ini est utilisé pour définir la durée maximale qu'un seul processus PHP peut exécuter avant d'être terminé. Ce paramètre est par défaut de 30 secondes, et il est recommandé de le définir sur 5 secondes :

max_execution_time = 5

Remarque : vous pouvez appeler la fonction set_limit_time() dans un script PHP pour remplacer ce paramètre.

Supposons que nous souhaitions générer un rapport et transformer les résultats dans un fichier PDF. Cette tâche peut prendre 10 minutes, et nous ne voulons certainement pas que la requête PHP attende 10 minutes. . Nous devons écrire un fichier PHP séparé, le laisser s'exécuter dans un processus en arrière-plan distinct, l'application Web peut créer un processus en arrière-plan distinct en quelques millisecondes seulement, puis renvoyer la réponse HTTP :

<?phpexec(&#39;echo "create-report.php" | at now&#39;);echo &#39;report pending...&#39;;
  • 1

  • 2

  • 3

create-report.php Courir dans un processus d'arrière-plan séparé et terminé. Vous pouvez ensuite mettre à jour la base de données ou envoyer le rapport par courrier électronique au destinataire. Cependant, cette utilisation est rare.Le plus souvent, nous implémentons des fonctions similaires via des files d'attente de consommation asynchrones.En termes de sécurité, d'évolutivité et de maintenabilité, les composants associés incluent PHPResque et al.

Gestion des sessions

Le gestionnaire de session par défaut de PHP peut ralentir les applications volumineuses car ce gestionnaire stocke les données de session sur le disque dur, créant des E/S disque inutiles, ce qui représente une perte de temps. Nous devons conserver les données de session en mémoire, par exemple en utilisant Memcached ou Redis. Cela présente l’avantage supplémentaire de faciliter la mise à l’échelle ultérieure. Si les données de session sont stockées sur le disque dur, il n'est pas pratique d'ajouter des serveurs supplémentaires. Si les données de session sont stockées dans Memcached ou Redis, n'importe quel serveur PHP-FPM distribué peut accéder aux données de session.

Si vous souhaitez enregistrer les données de session dans Memcached, vous devez configurer les éléments suivants :

session.save_handler = &#39;memcached&#39;session.save_path = &#39;127.0.0.1:11211&#39;2

Sortie tamponnée

Si vous envoyez plus de données en moins de blocs, plutôt que d'envoyer moins de données en plusieurs morceaux, le réseau sera plus efficace, c'est-à-dire que fournir du contenu au navigateur du visiteur en moins de fragments peut réduire le nombre total de requêtes HTTP.

Par conséquent, nous devons laisser PHP tamponner la sortie. Par défaut, PHP a activé la fonction de mise en mémoire tampon de sortie. PHP met en mémoire tampon 4096 octets de sortie avant d'envoyer le contenu au serveur Web.

output_buffering = 4096implicit_flush = false2

Remarque : Si vous souhaitez modifier la taille du tampon de sortie, assurez-vous d'utiliser une valeur qui est un multiple de 4 (systèmes 32 bits) ou de 8 (systèmes 64 bits) .

Cache du chemin réel

PHP mettra en cache le chemin du fichier utilisé par l'application, de sorte que vous n'ayez pas besoin de rechercher constamment le chemin d'inclusion à chaque fois que vous incluez ou importez un Ce cache est appelé cache de chemin réel ( realpath cache), si vous exécutez des fichiers PHP volumineux (tels que des composants Composer) et utilisez un grand nombre de fichiers, augmenter la taille du cache de chemin réel PHP peut obtenir de meilleures performances.

La taille par défaut du cache de chemin réel est de 16 Ko. La taille exacte requise pour ce cache n'est pas facile à déterminer, mais vous pouvez utiliser une petite astuce : commencez par augmenter la taille du cache de chemin réel et définissez-la. à une valeur particulièrement grande. Par exemple, 256 Ko. Ensuite, ajoutez print_r(realpath_cache_size()); à la fin d'un script PHP pour afficher la taille réelle du cache de chemin réel. à cette valeur réelle. Nous pouvons définir la taille du cache de chemin réel dans le fichier php.ini :

realpath_cache_size = 64K

Recommandations associées :

Introduction approfondie à la configuration de session principale en PHP. ini

Explication détaillée des configurations courantes dans php.ini

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:
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