Maison >développement back-end >tutoriel php >Guide d'amélioration des performances PHP-FPM : optimisation du temps de réponse et du débit de votre site Web

Guide d'amélioration des performances PHP-FPM : optimisation du temps de réponse et du débit de votre site Web

WBOY
WBOYoriginal
2023-10-05 11:33:141122parcourir

Guide damélioration des performances PHP-FPM : optimisation du temps de réponse et du débit de votre site Web

Guide d'amélioration des performances PHP-FPM : Optimisez le temps de réponse et le débit du site Web, des exemples de code spécifiques sont nécessaires

Introduction :
À l'ère Internet d'aujourd'hui, l'optimisation des performances du site Web devient de plus en plus importante. L'expérience utilisateur sur le site Web est directement liée à la fidélisation des utilisateurs et au taux de conversion. PHP est un langage de développement back-end couramment utilisé, et PHP-FPM est l'abréviation de PHP FastCGI Process Manager, qui est un choix de mode d'exécution de PHP. Cet article détaillera comment améliorer le temps de réponse et le débit du site Web en optimisant PHP-FPM, tout en fournissant des exemples de code spécifiques.

1. Optimiser la configuration de PHP-FPM

  1. Ajuster les paramètres du pool de processus
    PHP-FPM utilise des pools de processus pour gérer les requêtes. Un ajustement correct des paramètres du pool de processus peut améliorer les performances.
    a. max_children : Spécifie le nombre maximum de processus enfants dans chaque pool de processus. Ajustez cette valeur de manière appropriée en fonction des performances et de la charge du serveur. Vous pouvez utiliser la commande "pm.max_children = 50" pour définir le nombre maximum de processus enfants à 50.
    b. start_servers : Spécifie le nombre de processus enfants au démarrage du pool de processus. Choisissez une valeur raisonnable en fonction de la charge du serveur. Vous pouvez utiliser la commande "pm.start_servers = 10" pour définir le nombre de processus enfants au démarrage sur 10.
  2. Ajuster les paramètres du pool de connexions
    Le pool de connexions est utilisé par PHP-FPM pour gérer la connexion avec le serveur web (comme Nginx). En ajustant les paramètres du pool de connexions, vous pouvez améliorer les performances de votre connexion.
    a. pm.max_requests : Spécifie le nombre maximum de requêtes traitées par chaque processus enfant. Une fois que le nombre de requêtes traitées par le processus enfant atteint cette valeur, il sera arrêté et redémarré. Cela évite les fuites de mémoire causées par des processus de longue durée. Vous pouvez utiliser la commande "pm.max_requests = 10000" pour définir le nombre maximum de requêtes traitées par chaque processus enfant à 10 000.
    b. request_terminate_timeout : Spécifiez le délai d'expiration du traitement des demandes. Si une demande n’est pas traitée au-delà de ce délai, elle sera interrompue de force. Vous pouvez utiliser la commande "request_terminate_timeout = 60s" pour définir le délai d'attente de traitement des requêtes à 60 secondes.

2. Optimisation du code

  1. Mise en cache des données
    L'utilisation du cache peut réduire la fréquence d'accès aux ressources telles que les bases de données, améliorant ainsi les performances. Voici un exemple de code simple utilisant Memcached comme cache :

    <?php
    $memcached = new Memcached();
    $memcached->addServer('localhost', 11211);
    
    $key = 'cache_key';
    $data = $memcached->get($key);
    if (!$data) {
     $data = fetchDataFromDatabase();
     $memcached->set($key, $data, 60);
    }
    
    // 使用$data进行其他操作
    ?>
  2. Utilisez la base de données de manière appropriée
    La base de données est une partie importante du site Web, et une utilisation raisonnable de la base de données peut améliorer les performances. Ce qui suit est un exemple de code simple qui utilise PDO pour les opérations de base de données et active le prétraitement :

    <?php
    $dsn = 'mysql:host=localhost;dbname=test';
    $user = 'username';
    $password = 'password';
    $options = array(
     PDO::ATTR_EMULATE_PREPARES => false, // 禁用准备好的语句的模拟
     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION // 启用错误处理
    );
    
    $pdo = new PDO($dsn, $user, $password, $options);
    
    $stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
    $stmt->bindValue(':id', $id, PDO::PARAM_INT);
    $stmt->execute();
    
    $data = $stmt->fetch(PDO::FETCH_ASSOC);
    ?>

3. Optimiser les performances du code

  1. Réduire les opérations d'E/S
    Les opérations d'E/S sont l'un des goulots d'étranglement des performances, la réduction des opérations d'E/S peut améliorer la code Efficacité d'exécution. Voici un exemple de code simple qui utilise la mise en cache des fichiers pour réduire les appels fréquents à la base de données :

    <?php
    $cacheFile = 'cache.txt';
    
    if (file_exists($cacheFile) && time() - filemtime($cacheFile) < 60) {
     $data = file_get_contents($cacheFile);
    } else {
     $data = fetchDataFromDatabase();
     file_put_contents($cacheFile, $data);
    }
    
    // 使用$data进行其他操作
    ?>
  2. Évitez les requêtes répétées dans les boucles
    Les requêtes répétées dans les boucles réduiront considérablement les performances, vous pouvez éviter la duplication en mettant en cache les résultats de la requête. Ce qui suit est un exemple de code simple qui utilise un tableau pour mettre en cache les résultats des requêtes :

    <?php
    $query = 'SELECT * FROM products';
    $result = array();
    
    foreach ($pdo->query($query) as $row) {
     if (isset($result[$row['key']])) {
         $result[$row['key']][] = $row;
     } else {
         $result[$row['key']] = array($row);
     }
    }
    
    // 使用$result进行其他操作
    ?>

Conclusion :
En optimisant la configuration de PHP-FPM, l'utilisation rationnelle du cache et de la base de données et en optimisant les performances du code, nous pouvons grandement améliorer la temps de réponse et temps de réponse du débit du site Web. Dans les applications réelles, il est nécessaire d'ajuster la configuration en fonction des performances et de la charge du serveur, d'utiliser des mécanismes de mise en cache et des méthodes d'exploitation de base de données appropriés, et d'éviter les opérations d'E/S inutiles et les requêtes répétées.

Référence :

  • Documentation PHP-FPM : http://php.net/manual/en/install.fpm.php
  • Documentation PHP : http://php.net/manual/en/index.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!

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