Maison  >  Article  >  développement back-end  >  Exemple détaillé d'optimisation des performances PHP

Exemple détaillé d'optimisation des performances PHP

黄舟
黄舟original
2017-07-27 10:08:461276parcourir

php est un langage de script très populaire. Aujourd'hui, de nombreuses entreprises (Sina, Youku, Baidu, Sohu, Taobao, etc.) utilisent ce langage pour le développement de sites Web. Avec cet article, j'espère juste améliorer les performances de vos scripts php. N'oubliez pas que les performances de vos scripts PHP dépendent souvent de votre version de PHP, de l'environnement de votre serveur Web et de la complexité de votre code.

Optimisez les goulots d'étranglement dans votre code

Hoare a dit un jour que "l'optimisation prématurée est la racine de tous les malheurs". Lorsque vous souhaitez accélérer le fonctionnement de votre site Web, vous devez procéder à une optimisation. Que devez-vous faire avant de modifier votre code ? Qu'est-ce qui ralentit le système ? Vous pouvez optimiser votre php grâce aux conseils suivants et à d'autres méthodes, cela peut être pour des raisons de base de données ou de réseau. En optimisant votre code php, vous pouvez essayer de trouver les goulots d'étranglement de votre système !

Mettez à niveau votre version PHP

Les membres de votre équipe ont suggéré que le moteur PHP a connu de nombreuses améliorations symboliques des performances au fil des ans. Si votre serveur Web exécute toujours une ancienne version, telle que php3 ou php4. Ainsi, avant d’essayer d’optimiser votre code, vous devez approfondir les mises à niveau entre les versions.

Cliquez sur le lien suivant pour connaître les détails spécifiques :

Port de PHP 4 vers PHP 5

Port de PHP 5.0.x vers PHP 5.1.x

Migration de PHP 5.1.x vers PHP 5.2.x

Utiliser la mise en cache

Utilisez des modules de mise en cache (tels que Memcache) ou des systèmes de modèles (tels que Smarty) pour le traitement de la mise en cache. Nous pouvons améliorer les performances du site Web en mettant en cache les résultats de la base de données et en extrayant les résultats des pages.

Utiliser le tampon de sortie

Lorsque votre script tente d'effectuer un rendu, PHP utilisera le tampon mémoire pour enregistrer toutes les données. La mise en cache peut rendre votre page lente car le tampon est rempli de toutes les données auxquelles il faut répondre avant que le résultat ne soit renvoyé à l'utilisateur. Heureusement, vous pouvez apporter une modification qui oblige PHP à répondre à l'utilisateur avant que le tampon ne se remplisse, ce qui rendra votre site Web plus rapide.

  • Contrôle du cache de sortie

Évitez d'écrire des setters et des getters naïfs

Lorsque vous écrivez des classes PHP, vous pouvez manipuler les propriétés des objets directement, ce qui peut vous aider à gagner du temps et à améliorer les performances de vos scripts. Plutôt que le genre de passeurs et de getters qui rendent les gens puérils et ridicules.

Voici quelques cas : la classe dog exploite l'attribut name en utilisant setName() et getName().

class dog {
  public $name = '';

  public function setName($name) {
    $this->name = $name;
  }

  public function getName() {
    return $this->name;
  }
}

Remarque : setName() et getName() ne font aucun travail sauf stocker et renvoyer l'attribut name.

$rover = new dog();
$rover->setName('rover');
echo $rover->getName();

La définition et l'accès directs à l'attribut name peuvent améliorer les performances de 100 % et réduire le temps de développement !

$rover = new dog();
$rover->name = 'rover';
echo $rover->name;

Il n'y a aucune raison de ne pas copier les variables

Parfois, les PHPers juniors, afin de rendre le code plus "propre", réaffectent souvent une variable déjà définie à une autre variable. Cela entraîne effectivement une double consommation de mémoire (lors du changement de variables), ce qui entraîne une diminution des performances du script. Par exemple, si un utilisateur insère une variable de 512 Ko dans une autre variable, 1 Mo de mémoire sera consommé.

$description = strip_tags($_POST['description']);
echo $description;

Le code ci-dessus copie les variables sans raison. Il vous suffit de générer des variables en ligne sans consommer de mémoire supplémentaire.

echo strip_tags($_POST['description']);

Évitez d'effectuer des opérations SQL en boucle

Une erreur courante consiste à placer une opération SQL en boucle, ce qui entraîne un accès fréquent à la base de données. Plus important encore, cela se fera directement. conduit à de faibles performances du script. Dans l'exemple suivant, vous pouvez réinitialiser une opération de boucle sur une seule instruction SQL.

foreach ($userList as $user) {
  $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
  mysql_query($query);
}

Processus :

INSERT INTO users (first_name,last_name) VALUES("John", "Doe")

Au lieu de ce schéma de boucle, vous pouvez regrouper les données en une seule opération de base de données.

$userData = array();
foreach ($userList as $user) {
    $userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
 }
$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);
mysql_query($query);

Processus :

INSERT INTO users (first_name,last_name) VALUES("John", "Doe"),("Jane", "Doe")...
  • Syntaxe MySQL INSERT

Autres ressources

  • Module PHP Memcache

  • Moteur de modèles Smarty

  • http://3v4l.org --- Analyser les différences entre les différents versions Efficacité d'exécution du code, très bon site Web

  • Résumé

Il existe encore de nombreuses optimisations de performances pour PHP Si cet aspect est n'importe qui. ceux qui ont une compréhension plus approfondie peuvent en discuter ensemble. Je mettrai également vos bonnes suggestions dans le billet de blog pour référence par d'autres PHPers. Être un phper peut améliorer de nombreux phpers

Les capacités de

sont une grande fierté.


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