PHP 7 : Migrez ! – AFUP Lyon - 23 mars 2016



PHP 7 : Migrez ! – AFUP Lyon - 23 mars 2016

0 0


afup-presentation-php7-migrez


On Github srogier / afup-presentation-php7-migrez

PHP 7 : Migrez !

AFUP Lyon - 23 mars 2016

@srogier / srogier Dernière version de php7 sortie en décembre (fonctionnalité + gain de perf) Depuis sept et les premières RC, chez Decitre début de la préparation de la migration J'ai dix minutes ce soir pour vous présenter ce que nous avons fait et sommes en train de faire pour la migration de decitre.fr Je ne vous parlerai des nouvelles fonctionnalités, mais je vais vous parler des outils aidant à la migration vers php7 et des problèmes potentiels rencontrés de celle-ci.

Pour plus d'informations

Tapez "s" pour ouvrir les notes de présentation.

Sondages express

  • Qui a déjà testé ou développe avec PHP 7 ? (réponse : dizaine de personnes)
  • Qui a éprévu de migrer vers PHP 7 ? (réponse : quizaine de personnes)
  • Qui a déjà en prod une application PHP 7 ? (réponse : 2 :D )

Vous avez des tests unitaires ?

Et une couverture de code à 100% ?

Upgradez, lancez les tests et corrigez les erreurs Mais dans la vraie vie, les projets ont rarement une couverture de code à 100% Voir certains n'ont aucun test Comment simplifier et fiabiliser sa migration vers PHP7 ?

Migrer depuis 5.6 : RTFM !

http://php.net/manual/en/migration70.php PHP fourni un guide de migration relativement complet avec
  • les ruptures de compatibilité
  • les nouvelles fonctionnalités
  • les fonctionnalités supprimées/modifiés
  • les changements de comportements
Comment identifier les incompatibilités dans les 300 000 lignes de mon code ?

PHP 7 Compatibility Checker

https://github.com/sstalle/php7cc Outil de detection des erreurs et incompatibilité php7 Fonctionne à partir de PHP 5.3 Se base sur PHP Parser Découpe le code en token et identifie les cas qui peuvent poser problème Facilement installable via composer.phar en global et lançable dans un dossier

Parcourt tous les fichiers et remonte les erreurs potentielles ou non Il ne reste plus qu'à corriger Fastidieux, mais efficace. 220 alertes sur magento (code, magento, ZF) (certaines uniquement des alertes) Contrôle des conditions de la rupture de compat non atteintes. Très efficace : cf bug non listé On a maintenant un code compatible avec php7. Mais comment le tester ?

Docker, Vagrant, etc.

Vous avez le choix ! Images dipos, packages rpm et deb également Apt-get update si vous voulez On en a profité pour passer sur docker en dev et facilement basculer entre 5.6 et 7.0

Attention aux extensions PHP

https://github.com/gophp7/gophp7-ext/wiki/extensions-catalog Toutes ne sont pas portées Exemple de la nouvelle extension mongo vs legacy. Etat des lieux des différentes extensions. Attention des versions php7 ne sont pas forcément packagés, mais utilisable sur une branche (memcached par exemple). Etape la plus compliquée et aléatoire de la migration

Une migration peut en cacher une autre

Dans notre cas, passage de wheezy à jessie avec upgrade de version apache et varnish afin de bénéficier des dernières versions maintenues PHP7 ne sera peut-être pas le plus compliqué et révéler des surprises.

Mais au final, ça vaut le coup

Fiche produit Panier Wall time -22 % (-320ms) -13 % (-370ms) CPU time -23 % (-310ms) -15 % (-390ms) Memory -41 % (-19Mb) -41 % (-25Mb) Chiffres basés sur l'environnment de dev. Retard sur la migration car retardée par l'arrivée tardive de l'extension newrelic Dans tous les cas, il est rare d’avoir en une seule upgrade un tel gain de perf pour un coût de migration raisonnable. Gain de perf pour gain d'infra Donc allez-y ! Migrez !

Merci pour votre attention

Des questions ?

PHP 7 : Migrez ! AFUP Lyon - 23 mars 2016 @srogier / srogier Dernière version de php7 sortie en décembre (fonctionnalité + gain de perf) Depuis sept et les premières RC, chez Decitre début de la préparation de la migration J'ai dix minutes ce soir pour vous présenter ce que nous avons fait et sommes en train de faire pour la migration de decitre.fr Je ne vous parlerai des nouvelles fonctionnalités, mais je vais vous parler des outils aidant à la migration vers php7 et des problèmes potentiels rencontrés de celle-ci.