Contact salesFree trial
Blog

FrankenPHP en marche et en pleine forme

PHPFrankenPHPSymfony
Partager

Nous sommes ici pour vous éclairer sur la façon d'utiliser et de configurer FrankenPHP - unserveur d'applications PHP moderne, écrit en Go et conçu pour accélérer vos applications PHP - sur Upsun avec notre guide pas à pas.

Note: Les processus/commandes du tutoriel Up(sun) and running with FrankenPHP peuvent être adaptés à votre projet Platform.sh en remplaçant upsun CLI par platform CLI, et en changeant mounts.source de storage à local dans la configuration de votre application.

Comment commencer à utiliser FrankenPHP sur Upsun

Pour effectuer les étapes suivantes de ce guide, vous devez héberger votre application PHP sur Upsun - pour plus de détails sur la façon de le faire, suivez ce tutoriel simple sur la façon d'héberger une application Symfony Demo sur Upsun.

Veuillez noter: si vous utilisez votre propre code PHP, vous devrez remplacer tous les appels CLI de Symfony dans ce blogpost par des appels CLI d'Upsun, comme :

upsun branch staging --type staging

Créer un environnement de mise à l'essai

Comme nous ne testons jamais (jamais) de nouvelles fonctionnalités directement sur la production, nous allons créer un nouvel environnement pour tester et configurer notre application Symfony Demo pour utiliser FrankenPHP.

Pour créer un nouvel environnement sur notre projet, utilisez la commande suivante :

symfony branch staging --type=staging

Cette commande crée un nouvel environnement destagingactif (de type staging) et bascule automatiquement votre branche Git locale en staging.

Comment utiliser FrankenPHP sur Upsun

Il est maintenant temps de vous montrer comment utiliser FrankenPHP, ce serveur web rad PHP a été conçu dans un but similaire à celui de Swoole et RoadRunner: augmenter la vitesse de chargement de vos applications PHP. Alors, comment le configurer dans Upsun ?

Kevin Dunglas, des Tilleuls, fournit une image FrankenPHP intégrée qui peut être utilisée pour faire tourner un serveur PHP FrankenPHP si l'on préfère le serveurPHP-FPM fourni par Upsun.

Pour ce faire, ouvrez votre code source dans votre IDE favori, et mettez à jour votre fichier.upsun/config.yaml en complétant les étapes suivantes :

1. Trouvez la section applications.app.web et modifiez-la en conséquence : tous les appels HTTP doivent passer par l'application et le protocole HTTP en amont par défaut doit utiliser les sockets unix tcp. Vous devez également définir un commands.start pour démarrer le serveur FrankenPHP.

applications : app : ... web : locations : "/" : root : "public" expires : 1h #passthru : "/index.php" passthru : true scripts : false allow : false upstream : # important pour PHP nous utilisons par défaut des sockets unix socket_family : tcp protocol : http commands : start : ./frankenphp php-server --listen=localhost:$PORT --root=$PLATFORM_DOCUMENT_ROOT

Remarque: ce binaire ./frankenPHP sera installé dans une étape ultérieure, en utilisant un script shell install-frankenphp.sh à distance - voir l'étape 3 ci-dessous.

2. Comme FrankenPHP a besoin d'accéder en écriture à un dossier .local, vous devez ajouter un mount (=dossier inscriptible dans votre conteneur d'applications) pour que FrankenPHP puisse le faire. Veuillez trouver la section applications.app.mounts dans votre .upsun/config.yaml et ajoutez la configuration.local mount suivante :

applications : app : ...  
    mounts : ... ".local" : { source : storage, source_path : frankenphp-local}

3. Nous avons conçu un script shell pour vous(source) qui peut être utilisé pour installer frankenPHP (une seule fois) pendant l'étape applications.app.hooks.build:

applications : app : ... hooks : build : | set -x -e curl -fs https://get.symfony.com/cloud/configurator | bash NODE_VERSION=18 symfony-build curl -fsS https://raw.githubusercontent.com/upsun/snippets/main/src/install-frankenphp.sh | { bash /dev/fd/3 5.1.1 ; }

Veuillez noter que le premier appel curl au configurateur Symfony est spécifique à Symfony et introduit de nouveaux outils pour déployer votre application de démonstration Symfony. Si vous utilisez votre propre base de code PHP, n'ajoutez que la dernière commande curl dans vos crochets de construction:

curl -fsS https://raw.githubusercontent.com/upsun/snippets/main/src/install-frankenphp.sh | bash 

4. Ajoutez le runtime FrankenPHP à votre projet Symfony. Selon la page de documentation de FrankenPHP, vous devez ajouter le bundle suivant à l'application :

composer require runtime/frankenphp-symfony

Remarque: si vous n'utilisez pas une application Symfony mais votre propre code PHP, vous pouvez sauter cette étape.

5. Ajouter une variable d'environnement APP_RUNTIME-pour indiquer à Symfony d'utiliser le nouveau runtime FrankenPHP, vous avez besoin d'une variable d'environnement, nommée APP_RUNTIME. Pour ce faire, dans votre fichier .upsun/config.yaml, trouvez la sectionapplications.app.variables et ajoutez ce qui suit :

applications : app : ...  
    variables : php : ... 
      env : 
        APP_RUNTIME : 'Runtime\\NFrankenPhpSymfony\NRuntime'

Remarque: si vous n'utilisez pas une application Symfony mais votre propre base de code PHP, vous pouvez sauter cette étape.

6. Déployez vos changements sur staging.

git add composer.json composer.lock symfony.lock .upsun/config.yaml install_frankenphp.sh git commit -m "Utiliser FrankenPHP au lieu de PHP-FPM" symfony deploy # ou upsun push

7. Ouvrez l'URL de votre environnement de staging. Pour ouvrir l'URL de l'environnement correspondant, utilisez la commande suivante:

symfony environment:url

8. Fusionner avec la production. Lorsque vous êtes satisfait du comportement de votre application, vous pouvez la fusionner avec la branche principale de production, en utilisant la commande suivante :

symfony merge symfony checkout main git pull upsun main symfony environment:delete staging git fetch --prune

Remarque: si vous souhaitez utiliser des commandes PHP directement sur le serveur, comme une commande de la console Symfony, vous devez utiliser la FrankenPHP PHP-CLI ./frankenphp php-cli, comme suit :

./frankenphp php-cli bin/console 

Si vous souhaitez approfondir l'utilisation de FrankenPHP ou d'autres serveurs PHP, tels que Swoole ou RoadRunner, avec votre application Symfony sur Upsun, jetez un oeil à cet article inspirant de Sergii Dolgushev qui vaut la peine d'être lu.

Tout en se concentrant sur l'installation de FrankenPHP, ce guide sert également d'introduction à l'utilisation de serveurs PHP alternatifs - souvent considérés pour les performancesimpressionnantes qu'ils peuvent apporter - sur Upsun.

L'application n'a besoin de démarrer qu'une seule fois, puis elle reste en mémoire et stockée dans le cache, ce qui élimine le besoin d'instanciation à chaque requête entrante. Lorsque vous utilisez PHP-FPM, chaque fois que votre application exécute un script PHP, celui-ci est chargé en mémoire et supprimé à la fin de son exécution. En outre, certains serveurs alternatifs intègrent des fonctionnalités asynchrones qui élargissent encore l'horizon technique.

Bien que les améliorations de performances liées à l'utilisation d'un serveur PHP alternatif comme FrankenPHP soient prometteuses, il est essentiel de procéder avec prudence. Le simple fait de changer de serveur ne résoudra pas les problèmes de performance profondément ancrés ou d'autres problèmes sous-jacents - il s'agit plutôt d'une solution temporaire pour un problème plus important.

Une excellente première étape consiste à se plonger dans les tableaux de bord d'observabilité de l'application et de l'architecture afin d'identifier les domaines critiques qui doivent être améliorés. Une fois que vous aurez bien compris les performances de votre application, vous pourrez envisager de passer à un autre serveur pour améliorer l'efficacité et la maniabilité. Pour en savoir plus sur l'observabilité, cliquez ici.

Restez au courant des dernières nouvelles sur nos médias sociaux et nos canaux communautaires : Dev.to, Reddit et Discord. Joyeux FrankenPHP'ing !

Votre meilleur travail
est à l'horizon

Essai gratuit
Discord
© 2025 Platform.sh. All rights reserved.