Maison  >  Article  >  développement back-end  >  53 façons d'optimiser le code PHP

53 façons d'optimiser le code PHP

小云云
小云云original
2018-03-28 13:48:051094parcourir

Cet article partage principalement avec vous 53 façons d'optimiser le code PHP. Utilisez des guillemets simples au lieu de guillemets doubles pour inclure des chaînes. Parce que PHP recherchera les variables dans les chaînes entourées de guillemets doubles, les guillemets simples ne le feront pas. Remarque : seul echo peut le faire, c'est une "fonction" qui peut prendre plusieurs chaînes comme paramètres (Annotation : Manuel PHP On dit que echo est. une structure de langage, pas une fonction réelle, donc la fonction est entourée de guillemets doubles).
1. Si vous pouvez définir une méthode de classe comme statique, essayez de la définir comme statique, et sa vitesse sera augmentée de près de 4 fois.
2. $row['id'] est 7 fois plus rapide que $row[id].
3. Echo est plus rapide que print et utilise plusieurs paramètres d'echo (annotation : fait référence à l'utilisation de virgules au lieu de points) au lieu de la concaténation de chaînes, comme echo $str1, $str2.
4. Déterminez le nombre maximum de boucles avant d'exécuter la boucle for. Ne calculez pas la valeur maximale à chaque boucle. Il est préférable d'utiliser foreach à la place.
5. Désenregistrez les variables inutilisées, en particulier les grands tableaux, pour libérer de la mémoire.
6. Essayez d'éviter d'utiliser __get, __set, __autoload.
7. require_once() coûte cher.
8. Essayez d'utiliser des chemins absolus lors de l'inclusion de fichiers, car cela évite la vitesse de recherche des fichiers par PHP dans include_path et le temps requis pour analyser le chemin du système d'exploitation sera moindre.
9. Si vous souhaitez connaître l'heure à laquelle le script commence à s'exécuter (annotation : c'est-à-dire que le serveur reçoit la requête du client), il est préférable d'utiliser $_SERVER['REQUEST_TIME'] plutôt que time().
10. Les fonctions remplacent les expressions régulières pour compléter la même fonction.
11. La fonction str_replace est plus rapide que la fonction preg_replace, mais la fonction strtr est quatre fois plus efficace que la fonction str_replace.
12. Si une fonction de remplacement de chaîne accepte des tableaux ou des caractères comme paramètres et que la longueur du paramètre n'est pas trop longue, vous pouvez envisager d'écrire un code de remplacement supplémentaire afin que chaque paramètre passé soit un caractère au lieu d'une seule ligne. accepte les tableaux comme paramètres pour la requête et le remplacement.
13. Il est préférable d'utiliser une instruction de branchement sélectif (annotation de traduction : changer de casse) plutôt que d'utiliser plusieurs instructions if, else if.
14. Utiliser @ pour bloquer les messages d'erreur est très inefficace, extrêmement inefficace.
15. L'ouverture du module mod_deflate d'Apache peut améliorer la vitesse de navigation des pages Web.
16. La connexion à la base de données doit être fermée une fois son utilisation terminée et n'utilisez pas de connexions longues.
17. Les messages d’erreur coûtent cher.
18. L'augmentation des variables locales dans les méthodes est la plus rapide. Presque aussi rapide que d’appeler des variables locales dans une fonction.
19. L'incrémentation d'une variable globale est 2 fois plus lente que l'incrémentation d'une variable locale.
20. L'incrémentation d'une propriété d'objet (telle que : $this->prop++) est 3 fois plus lente que l'incrémentation d'une variable locale.
21. L'incrémentation d'une variable locale non définie est 9 à 10 fois plus lente que l'incrémentation d'une variable locale prédéfinie.
22. Le simple fait de définir une variable locale sans l'appeler dans une fonction ralentira également (au même titre que l'incrémentation d'une variable locale). PHP vérifiera probablement si une variable globale existe.
23. Les appels de méthode semblent être indépendants du nombre de méthodes définies dans la classe, car j'ai ajouté 10 méthodes (avant et après le test de la méthode), mais il n'y a eu aucun changement dans les performances.
24. Les méthodes des classes dérivées s'exécutent plus rapidement que les mêmes méthodes définies dans les classes de base.
25. L'appel d'une fonction vide avec un paramètre prend le même temps que l'exécution de 7 à 8 opérations d'incrémentation de variable locale. Un appel de méthode similaire prend près de 15 incréments de variables locales.
26. Le temps nécessaire à Apache pour analyser un script PHP est 2 à 10 fois plus lent que pour analyser une page HTML statique. Essayez d'utiliser plus de pages HTML statiques et moins de scripts.
27. À moins que le script puisse être mis en cache, il sera recompilé à chaque appel. L'introduction d'un mécanisme de mise en cache PHP peut généralement améliorer les performances de 25 à 100 % pour éliminer la surcharge de compilation.
28. Essayez de mettre en cache autant que possible, vous pouvez utiliser memcached. Memcached est un système de mise en cache d'objets mémoire hautes performances qui peut être utilisé pour accélérer les applications Web dynamiques et réduire la charge de la base de données. La mise en cache des codes OP est utile afin que les scripts n'aient pas besoin d'être recompilés pour chaque requête.
29. Lorsque vous utilisez une chaîne et que vous devez vérifier si sa longueur répond à certaines exigences, vous utiliserez naturellement la fonction strlen(). Cette fonction s'exécute assez rapidement car elle n'effectue aucun calcul et renvoie simplement la longueur connue de la chaîne stockée dans la structure zval (la structure de données intégrée au C utilisée pour stocker les variables PHP). Cependant, puisque strlen() est une fonction, elle sera quelque peu lente, car l'appel de fonction passera par de nombreuses étapes, telles que les lettres minuscules (Annotation : fait référence au nom de la fonction en minuscule, PHP ne fait pas de distinction entre les noms de fonction en majuscules et en minuscules. ), recherche de hachage, Sera exécuté avec la fonction appelée. Dans certains cas, vous pouvez utiliser l'astuce isset() pour accélérer l'exécution de votre code.
(Exemple ci-dessous)
if (strlen($foo) < 5) { echo "Foo est trop court"$$ }
(Comparez avec la technique suivante)
if (!isset ( $foo{5})) { echo "Foo est trop court"$$ }
Appeler isset() s'avère être plus rapide que strlen(), car contrairement à ce dernier, isset(), en tant que construction de langage, ce qui signifie que son exécution ne nécessite pas de recherche de fonction ni de lettre minuscule. Autrement dit, vous ne dépensez pas beaucoup de temps système dans le code de niveau supérieur pour vérifier la longueur de la chaîne.
34. Lors de l'exécution de l'incrémentation ou de la décrémentation de la variable $i, $i++ sera plus lent que ++$i. Cette différence est spécifique à PHP et ne s'applique pas aux autres langages, alors ne modifiez pas votre code C ou Java et attendez-vous à ce qu'il soit instantanément plus rapide, cela ne fonctionnera pas. ++$i est plus rapide car il ne nécessite que 3 instructions (opcodes), tandis que $i++ nécessite 4 instructions. La post-incrémentation crée en fait une variable temporaire qui est ensuite incrémentée. L'incrément du préfixe augmente directement sur la valeur d'origine. Il s'agit d'une forme d'optimisation, comme le fait l'optimiseur PHP de Zend. C'est une bonne idée de garder cette optimisation à l'esprit, car tous les optimiseurs de commandes ne font pas les mêmes optimisations et il existe un grand nombre de fournisseurs d'accès Internet (FAI) et de serveurs sur lesquels aucun optimiseur de commandes n'est installé.
35. Tout ne doit pas nécessairement être orienté objet (POO), l'orientation objet coûte souvent très cher et chaque appel de méthode et d'objet consomme beaucoup de mémoire.
36. Il n'est pas nécessaire d'utiliser des classes pour implémenter toutes les structures de données, les tableaux sont également très utiles.
37. Ne subdivisez pas trop les méthodes. Réfléchissez bien au code que vous avez réellement l’intention de réutiliser ?
38. Vous pouvez toujours diviser le code en méthodes lorsque vous en avez besoin.
39. Essayez d'utiliser un grand nombre de fonctions intégrées à PHP.
40. S'il y a un grand nombre de fonctions chronophages dans le code, vous pouvez envisager de les implémenter à l'aide d'extensions C.
41. Profilez votre code. Le vérificateur vous dira quelles parties du code prennent combien de temps. Le débogueur Xdebug comprend des programmes d'inspection qui évaluent l'intégrité globale de votre code et révèlent les goulots d'étranglement dans votre code.
42. mod_zip peut être utilisé comme module Apache pour compresser instantanément vos données et réduire le volume de transmission de données de 80 %.
43. Lorsque file_get_contents peut être utilisé à la place de file, fopen, feof, fgets et d'autres séries de méthodes, essayez d'utiliser file_get_contents car c'est beaucoup plus efficace ! Mais veuillez faire attention au problème de version PHP de file_get_contents lors de l'ouverture d'un fichier URL ;
44. Effectuez le moins d'opérations sur les fichiers, bien que l'efficacité des opérations sur les fichiers PHP ne soit pas faible
45. possible Dans ces circonstances, effectuez le moins d'opérations d'insertion et de mise à jour possible (on m'a critiqué pour la mise à jour
46. Utiliser autant que possible les fonctions internes de PHP (mais j'ai gaspillé beaucoup d'argent juste pour trouver une fonction qui le fasse) ; n'existe pas en PHP. Il faut moins de temps pour écrire une fonction personnalisée, c'est une question d'expérience !
47. Ne déclarez pas de variables à l'intérieur d'une boucle, surtout les grandes variables : les objets (cela ne semble pas être qu'un simple objet). problème en PHP, n'est-ce pas ?);
48. Essayez de ne pas imbriquer les affectations dans des boucles pour les tableaux multidimensionnels
49. N'utilisez pas d'expressions régulières lorsque vous pouvez utiliser les fonctions de manipulation de chaînes internes de PHP ; 50. Foreach est plus efficace, essayez d'utiliser foreach remplace les boucles while et for
51. Utilisez des guillemets simples au lieu de guillemets doubles pour citer les chaînes
52. . Il est conforme aux habitudes de c/c++ et est plus efficace." ;
53. Les variables globales doivent être désactivées () après utilisation ;
Enfin, résumons les stratégies d'optimisation PHP courantes et importantes :
1. Utilisez des chemins absolus dans les inclusions et les exigences, afin que l'analyse du chemin prenne moins de temps ;
2. N'utilisez pas de fonctions dans les boucles, telles que For($x=0; $x < count ($array); $x), la fonction count() calcule d'abord à l'extérieur ;
3. Utilisez la fonction error_reporting(0) pour empêcher l'affichage d'informations potentiellement sensibles aux utilisateurs. Idéalement, le rapport d'erreurs devrait être complètement désactivé dans le fichier php.ini. Mais si vous utilisez un hôte virtuel partagé et que vous ne pouvez pas modifier php.ini, alors vous feriez mieux d'ajouter la fonction error_reporting(0) et de la mettre sur la première ligne de chaque fichier de script (ou d'utiliser require_once() pour le charger) . Cela peut protéger efficacement les requêtes et chemins SQL sensibles contre l'affichage lorsque des erreurs se produisent ;
4. Il est interdit d'avoir trop de boucles dans les boucles. Trop de boucles imbriquées réduiront l'efficacité de l'exécution
5. Il est interdit de le faire. exécuter dans une boucle Pour les instructions de requête associées, vous ne devez pas le faire sauf en cas d'absolue nécessité
6. Essayez d'utiliser des guillemets simples pour connecter des chaînes
7. Réduisez autant que possible les opérations de copie de variables. Par exemple : $description = $_POST['description'];
8 Lorsqu'il y a trop de if/else, utilisez autant que possible switch/case au lieu de if/else. Peut rendre le code plus concis
9. L'activation du mécanisme de mise en cache permet d'améliorer les performances et de réduire la charge de MySQL en même temps
10. Activer la compression gzip

Recommandations associées :

Compétences en codage PHP d'optimisation

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