Aller au contenu
E-commerce

PHP-FPM, quand la vitesse compte !

Team Host.it 5 min de lecture

Contenu

L'offre d'hébergement que nous présentons à nos Clients et Partenaires est conçue pour s'adapter aux besoins réels du projet à développer, s'agrandit lorsque cela est nécessaire et s'enrichit chaque année de nouvelles fonctionnalités et innovations technologiques.

Nous vous parlons aujourd'hui d'une technologie disponible au sein de nos profils d'hébergement depuis plusieurs années : PHP-FPM. Mais prenons un tout petit peu de recul pour vous expliquer comment nous gérions auparavant toutes les requêtes php faites par les utilisateurs vers vos sites hébergés sur Host.

La plupart des administrateurs de sites (ceux qui les développent et les gèrent) savent que PHP, l'un des langages de script les plus utilisés au monde, peut être intégré au HTML et fonctionne avec les principaux serveurs Web. Cependant, l’aspect le moins connu est la manière dont PHP peut être exécuté sur le serveur Web, et cela peut se produire de plusieurs manières.

Faisons une petite parenthèse pour expliquer comment est constituée notre plateforme. Si nous utilisons l’acronyme LAMP, combien de personnes savent de quoi nous parlons ? Pour ceux qui ne le savent pas, voici une très brève définition :

"LAMP est un acronyme qui désigne une plateforme logicielle pour le développement d'applications web qui tire son nom des initiales des composants logiciels avec lesquels elle est créée :

Linux (le système d'exploitation) Apache (le serveur Web) MySQL ou MariaDB (le système de gestion de base de données) HP (le langage de programmation)

La plateforme LAMP est l’une des plus utilisées au monde. Chacune des applications qui le composent est conçue pour un excellent fonctionnement en conjonction avec les autres." [Wikipédia]

La façon dont nous avons exécuté les requêtes et les processus PHP sur notre plate-forme LAMP était PHP FastCGI. Jetons un coup d'œil rapide à la façon dont cela fonctionne ensemble. Il s'agit d'un protocole générique d'interface avec un serveur Web. Plus précisément, il s'agit d'une variante de la précédente Common Gateway Interface (CGI) qui vise à réduire la surcharge associée à l'interface entre les serveurs Web et les programmes CGI, permettant à un serveur de gérer plusieurs requêtes simultanément.

Avec FastCGI, vous pouvez configurer plusieurs versions de PHP, particulièrement utile lorsque vous avez d'anciens sites Web créés, par exemple en PHP 5.1, qui ne sont pas compatibles avec la dernière version. Enfin, avec FastCGI, il est possible de prendre en charge différents utilisateurs, chacun avec ses propres instances de PHP. Cette fonctionnalité est particulièrement importante pour améliorer la sécurité dans un environnement partagé, dans lequel différents utilisateurs peuvent gérer chacun leur propre site Web.

Comment fonctionne FastCGI ? Grâce au protocole PHP FastCGI, le serveur web génère un processus unique en phase d'initialisation qui, à la fin de la phase de démarrage, attend. Chaque fois qu'une nouvelle requête entrante arrive, le serveur Web ouvre une connexion avec le processus fast-cgi (en attente) qui génère à son tour la sortie sur la connexion avec le client, qui lui est transférée par le serveur. Le principal avantage de ce protocole est la création de processus uniquement lors de la phase d'initialisation, optimisant ainsi le nombre de processus php.

Qu'est-ce qui change avec l'introduction de PHP-FPM ? PHP-FPM est une manière plus récente d'utiliser PHP avec un serveur web, et constitue une alternative au précédent PHP FastCGI avec l'implémentation de quelques fonctionnalités supplémentaires très utiles notamment pour les sites qui gèrent de plus en plus de trafic chaque jour (des sites vitrines au e-commerce). Pour ce type de sites web, il est donc nécessaire de disposer d'outils de plus en plus performants, à l'image de PHP-FPM.

Le fonctionnement est très similaire à PHP FastCGI et repose toujours sur l'exécution optimisée de processus PHP qui sont créés uniquement lors de la phase d'initialisation et restent en attente d'une nouvelle requête. La grande différence est que c'est le PHP-FPM (FastCGI Process Manager) lui-même qui exécute le processus et non plus le serveur web.

Le « Process Manager », comme son nom l'indique, est un script qui gère directement les processus PHP. Il attend et reçoit les instructions du serveur Web, exécute les scripts PHP requis et permet à un site Web de gérer de lourdes charges. Le PHP-FPM maintient des "pools" pour répondre aux requêtes PHP et les processus générés sont directement des "enfants" (CHILD) du Process Manager et peuvent donc être gérés séparément du serveur Web.

Ce mode garantit une plus grande robustesse du service, puisque des opérations telles que des changements de configuration ou des redémarrages de processus impactent les pools FPM individuels et non plus l'ensemble du serveur web.

Examinons maintenant quelques fonctionnalités techniques de PHP-FPM : Démonisation des processus PHP (fichiers PID, fichiers journaux, setsid(), setuid(), setgid(), chroot();

Possibilité de redémarrer les processus PHP sans provoquer d'interruption des requêtes en cours de traitement, vous pouvez donc modifier n'importe quel paramètre dans le fichier de configuration ou même mettre à jour PHP sans même 1 seconde d'arrêt !;

Possibilité de ne pas traiter les demandes provenant d'une IP spécifique ;

Possibilité de démarrer des enfants sous différents UID/GID/CHROOT et avec différents paramètres PHP (php.ini), le tout sans avoir besoin du mode sans échec ;

Possibilité de se connecter via stdout et stderr ;

En cas de corruption de la RAM partagée utilisée par un Cache OPCode, PHP-FPM peut effectuer un redémarrage d'urgence de tous les PHP CHILD ;

Force l'exécution du script à s'arrêter si set_time_limit() échoue.

Enfin, afin de garantir sécurité et rapidité à vos sites hébergés sur la plateforme Hébergeur et de vous inciter à mettre à jour votre CMS, PHP-FPM est disponible uniquement et exclusivement à partir de la version de PHP 7. Après plusieurs tests d'implémentation, nous avons en effet préféré mettre cette technologie à la disposition de ceux qui ont mis à jour leur version de PHP vers la plus récente justement parce que la combinaison de PHP 7 (et versions ultérieures) et de php-fpm garantit de meilleures performances en termes de sécurité et de rapidité de réponse.

En effet, rappelons-nous que l’un des moyens de garantir une sécurité maximale à vos sites Web et applications est de les maintenir constamment à jour.

De cette manière, vous pouvez garantir une augmentation des performances, de la sécurité et, par conséquent, disposer d'un site performant pour votre activité en ligne.

PHP-FPM en chiffres : quelques données sur la vitesse Comme nous l'avons longuement expliqué, PHP-FPM accélère les performances d'un environnement PHP. Mais de quel type d’augmentation parle-t-on ? Voyons ensemble le résultat de quelques tests pour mieux comprendre à quel point la vitesse de réponse des sites Web augmente réellement avec l'implémentation de PHP-FPM.

Le test a été réalisé en comparant les performances de PHP FastCGI (avec version PHP 5.6) vs PHP-FPM (avec version PHP 7.2) pour charger les pages d'accueil d'un site sous WordPress, une dans Joomla! et un dans Prestashop.

E-commerce

Hébergement pour boutiques en ligne

PrestaShop, WooCommerce et Magento : performance, sécurité et datacenters en Italie.

Du blog

E-commerce

Un’acquisizione strategica

Bhoost e Magentiamo in Host.it

Des archives

E-commerce

Vulnérabilité 0 jour dans PrestaShop

E-commerce

Politique de cookies et Cookie Bar, comment adapter votre site