Analyse des problèmes de performances PHP + optimisation

little bottle
Libérer: 2023-04-06 06:58:02
avant
2428 Les gens l'ont consulté

Cet article concerne l'analyse et l'optimisation des problèmes de performances PHP. Les amis intéressés peuvent venir en savoir plus !

Dans quelles circonstances rencontrez-vous des problèmes de performances PHP ?
1 Mauvaise utilisation de la syntaxe PHP
2 Le langage PHP ne peut pas faire des choses qu'il n'est pas doué pour faire
3 Le service connecté au langage php n'est pas puissant
4 PHP lui-même Lacunes
5 problèmes que je ne connais pas non plus

Analyse des problèmes de performances

Les problèmes de performances PHP représentent 10 % de l'ensemble du projet problèmes de performances La proportion est inférieure à 50%

Projets d'optimisation des performances, ne vous limitez pas à l'optimisation de PHP

Optimisation des performances au niveau du langage PHP
|
|
Périphériques php L'optimisation des performances du problème |


Analyse du langage PHP lui-même, optimisation




Outil de test de pression PHP AB Apache Benchmark (ab) (vous pouvez le télécharger vous-même) ab est un logiciel de test de stress fourni par Apache. Ce logiciel de test de stress sera inclus lors de l'installation du. serveur apache.


Comment utiliser ?

./ab -n1000 -c100 http://www.baidu.com/

-n nombre de requêtes

— -c nombre de requêtes simultanées

 url Adresse du test de stress cible




Démonstration de l'utilisation de l'outil de test de stress PHP
Se concentrer principalement sur autant de simultanéités que possible par seconde

La requête prend le moins de temps possible

Utiliser davantage les capacités propres de PHP

Optimisation : Écrivez moins de code, utilisez davantage celles de PHP capacités

Problèmes de performances : Auto Le code a beaucoup de redondance, une mauvaise lisibilité et de faibles performances

Pourquoi les performances sont-elles faibles ?
Le code PHP doit être compilé et analysé dans le langage sous-jacent. Ce processus sera traité pour chaque requête, ce qui coûte cher.

Bonne méthode :
Utiliser davantage les fonctions constantes variables intégrées de PHP

Préparation du code pour le test de performance des capacités de PHP


Processus d'exécution du code PHP


*.php ---Scanner---> Exprs -----Parser--->Opcodes---Exec--->Sortie




Test de performances entre les fonctions intégrées PHP
Point d'optimisation : avantages et inconvénients de performances des fonctions intégrées PHP
Description de la situation : Fonctions intégrées PHP, Il existe encore des différences de lenteur de bloc entre
Bonnes suggestions : En savoir plus sur la complexité temporelle des fonctions intégrées PHP


Test de code des tests de performances entre PHP intégré- dans les fonctions



isset($arr[$i]); //Moyenne 50 ms
array_key_exists($i,$arr);//Moyenne 85 ms


Réduire PHP Utilisation des fonctions magiques

Description de la situation : Les fonctions magiques fournies par PHP ont des performances médiocres
Pourquoi les performances sont-elles faibles Afin d'éviter des ennuis aux programmeurs PHP, le langage PHP a fait beaucoup pour vous

Bonnes méthodes Évitez autant que possible d'utiliser les fonctions magiques de PHP




PHP désactive le suppresseur d'erreurs

@La logique réelle

Ajouter avant le début du code et après la fin L'opcode ignore les erreurs

php -dv|d.active=1 -dv|d.execute=0 at.php

Je veux juste vérifier et je n'ai pas vraiment envie d'exécuter

PHP - Utilisation raisonnable de la mémoire et des expressions régulières

Point d'optimisation : Utilisation raisonnable de la mémoire

PHP dispose d'un mécanisme de recyclage de la mémoire pour garantir les résultats, mais veuillez également utiliser la mémoire avec précaution

Bon conseil
Utilisez unset() pour libérer la mémoire inutilisée à temps (remarque : unset() peut ne pas pouvoir être déconnecté)


Essayez d'en utiliser le moins possible Utilisation d'expressions régulières

La surcharge de retour en arrière des expressions régulières est relativement importante,

Bonne suggestion :
Utiliser les fonctions de traitement de chaînes pour implémenter la même logique


PHP-Éviter de faire des calculs dans la boucle

Point d'optimisation : éviter de faire des calculs dans la boucle

Description de la situation:
Les formules de calcul dans la boucle seront calculées à plusieurs reprises

Exemple de code:
> PHP ne convient pas aux grands calculs de données


PHP convient aux scénarios

Convient pour la connexion du serveur Web et des services de support, présentation de l'interface utilisateur


PHP - assurez-vous d'utiliser des chaînes de guillemets comme valeurs clés

PHP traitera les valeurs clés ​​sans guillemets comme constantes, ce qui entraîne une surcharge de recherche de constantes

Utiliser strictement les chaînes entre guillemets comme valeurs clés




Analyse et explication des problèmes liés à PHP



Quels sont les périphériques de PHP ?

Environnement d'exploitation Linux php Disque dur (stockage de fichiers) Réseau de mise en cache de base de données (comme MySQL)


Analyse de l'impact des périphériques PHP sur les programmes PHP
Réduction des opérations de type de fichier
Ordre général des scénarios PHP courants :

Lire et écrire le disque Lire et écrire la base de données Lire et écrire la mémoire Lire et écrire les données du réseau

Lire et écrire la mémoire<< Lire et écrire la base de données< Lire et écrire les données du réseau




Réduire les requêtes réseau initiées par PHP



Pièges des requêtes réseau :
1 Facteurs incertains de l'interface de l'autre partie
2 Stabilité du réseau Performance
Optimiser les requêtes réseau

1 Définir le délai d'expiration
Délai d'expiration de connexion 200 ms Délai d'expiration de lecture 800 ms Délai d'expiration d'écriture 500 ms   2 Paralléliser les requêtes série

1 curl_multi_* ()
2 Utiliser l'extension swoole

curl_multi_*() n'est pas très bon, car il est basé sur le temps de retour le plus long

curl_multi_add_handle Ajouter un handle de curl séparé à la session curl batch
curl_multi_close Ferme un groupe de handles cURL
curl_multi_exec Exécute une sous-connexion du handle cURL actuel
curl_multi_getcontent Si CURLOPT_RETURNTRANSFER est défini, renvoie le flux de texte de sortie obtenu
curl_multi_info_read Obtenez les informations de transmission pertinentes du cURL actuellement analysé
curl_multi_remove_handle Supprimez une ressource de handle dans la ressource de handle de traitement par lots curl
curl_multi_ select wait for all Active connexions dans le lot cURL
curl_multi_setopt Définir une option pour le multi-handle cURL
curl_multi_strerror - Chaîne de retour décrivant le code d'erreur


Recommander l'extension swoole à faire


Les avantages et les inconvénients de la compression de la sortie PHP
Compression de la sortie de l'interface PHP
Comment compresser ?

Utiliser Gzip

Avantages : propice à notre sortie de données, le client peut obtenir des données plus rapidement
Inconvénients : surcharge CPU supplémentaire

Réutilisation du cache PHP

Dans quelles circonstances le contenu de sortie doit-il être mis en cache ?
Requêtes multiples, le contenu reste inchangé


Réglage intelligent et idées de fenêtres temporelles qui se chevauchent

Smarty active la mise en cache

Idées de fenêtres temporelles qui se chevauchent

Série :
Process1 Process2 Process3 Process4

Fenêtres horaires qui se chevauchent :

process1
process2
Process3
Process4

Le suivant Quand un la tâche ne dépend pas fortement de la tâche précédente, vous pouvez utiliser le temps de chevauchement


Solution de traitement de contournement PHP

Généralement ordinaire : x.php -> Process1 ->process2 ->process3 -> process4->

Solution de contournement : x.php -> Process1 ->process2 (simultanément) ->Process3 ( En même temps) -->Process4->

Tutoriel recommandé : Tutoriel vidéo PHP

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!

Étiquettes associées:
source:cnblogs.com
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal