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!