php acceleration

PHP devient plus rapide

La concurrence aide à conduire de grands gains de performance en php. Alternatives de fonctionnement de php deviennent viables et avec eux est à venir vitesse accélérée.

Pourquoi s'inquiéter de la performance?

PHP n'est pas le langage le plus rapide dans lequel nous pourrions écrire des applications Web, mais nous continuons à le faire pour de nombreuses autres raisons. La vitesse pure d'une langue est rarement le principal facteur décisif pour de nombreux projets. La productivité des développeurs, pour une chose, est généralement plus importante. Et dans de nombreuses applications, les goulots d'étranglement ne seront pas dans le code de l'application; C'est plutôt là que se déroule l'interaction avec d'autres systèmes. Par exemple, la communication avec les bases de données, les API et les files d'attente de messages prend du temps.

Alors pourquoi s'inquiéter de la vitesse de la langue à tous? Eh bien, l'architecture des applications s'améliore et nous trouvons des moyens d'éviter tous ces goulets d'étranglement. Par exemple, une meilleure mise en cache, le traitement asynchrone et la cohérence éventuelle de l'aide, mais également rendre les performances du code d'application plus important. Essayer de gagner de la vitesse grâce au profilage et à l'optimisation du code peut être un processus long et fastidieux. Heureusement, les améliorations dans la vitesse de la langue elle-même nous donner une amélioration dans ces autres domaines gratuitement.

Alors, pourquoi est-php lente en comparaison avec d'autres langues? PHP est un langage dynamique et interprété. Cela signifie qu'il n'est pas compilé en langage machine, mais plutôt lu au moment de l'exécution. PHP a également une architecture de partage-rien, donc sur chaque demande, il interprète tout de frais. La conséquence de ceci est que la performance n'est pas aussi bonne que pour les langages compilés, mais elle permet également des fonctionnalités que les langues compilable n'ont pas.

Pas besoin de compiler PHP peut aider avec la productivité des développeurs de quelques façons. Il permet des cycles de rétroaction plus courts lors du développement-les résultats des changements au code peut être vu immédiatement sans aucune étape de compilation nécessitant d'être exécuté en premier. Il est moins nécessaire de s'inquiéter de la collecte des ordures et l'utilisation de la mémoire. Le débogage des erreurs d'exécution est simplifié, car vous pouvez identifier directement l'endroit où ils se trouvent dans le code source. Il permet également de code dynamique tel que variable variables, types dynamiques, et ainsi de suite, bien que les soins doivent être prises avec ces pour éviter de rendre votre application difficile à tester.

Un peu d'histoire

PHP est né de quelques binaires CGI écrits en C par Rasmus Ledorf. Pour pouvoir incorporer du HTML et d'autres tâches spécifiques au Web comme la gestion des formulaires, il a ajouté l'analyse d'une syntaxe simple perl-like. Cet analyseur pour PHP a été réécrit par Zeev Suraski et Andi Gutmans pour la sortie de php3. La version 4 de PHP a vu le Zend Engine -une manière complètement nouvelle d'exécuter php-introduit. PHP 5 a apporté avec elle la 2ème version du moteur Zend. La performance a augmenté à travers toutes ces versions.

Le Zend Engine analyse le code php et le transforme en OpCodes, qui sont ensuite interprétés. Un grand Boost de performance a longtemps été disponible en mettant en cache cette conversion en OpCodes. Jusqu'à la version 5,5 de PHP, cette mise en cache nécessaire extensions à php-le plus utilisé étant APC. A partir de 5,5 php opcode Caching fait maintenant partie du noyau.

Zend PHP est devenu la version de facto de la langue et le moteur sur lequel il s'exécute. Il ya eu des alternatives à cela au fil des ans, mais rien qui a pris sur un réel succès.

Rester informé

Recevez le meilleur contenu sur le futur du marketing, les changements dans le secteur et les avis de nos experts.

Autres façons d'exécuter php

Une tentative significative de remplacer le moteur Zend a été hiphop, la tentative de Facebook pour créer un moyen de compiler PHP en C++, motivé par la grande quantité de php qu'ils utilisent. Cela signifiait qu'il serait plus difficile de le réécrire à autre chose que de trouver un moyen de le faire courir plus vite. Ils trouvent également qu'ils sont en mesure d'être plus productif écriture en php que dans les langages compilés statiques.

Le principal inconvénient de hiphop, qui a conduit à son désapprobation, n'était pas en mesure de l'utiliser comme un remplacement Drop-in pour Zend. Le workflow de la conversion et la compilation fonctionne différemment du processus normal pour travailler avec PHP. Il ne pouvait pas effectuer l'interprétation du runtime, de sorte qu'il ne supporte pas les fonctionnalités de PHP qui en avaient besoin. Cela a limité à un sous-ensemble de la langue. Facebook a néanmoins eu un certain succès dans la réduction des frais généraux du serveur, mais il n'y avait que l'adoption limitée par d'autres.

La tentative ultérieure de Facebook pour s'attaquer à cela, cependant, a été beaucoup plus de succès. HHVM (machine virtuelle hiphop) a pris l'approche de la compilation JIT (Just in Time). C'est en contraste avec la compilation d'avant-temps faite par hiphop. HHVM compile PHP en codes d'octet qui sont ensuite interprétés par la machine virtuelle. JIT peut ne pas être aussi rapide, mais il n'empêche pas HHVM supportant les fonctionnalités dynamiques de php.

Cela signifie que HHVM est une perspective réelle comme un moteur alternatif pour php. Des efforts sont faits tout au long de la communauté PHP pour obtenir des cadres principaux de travail avec HHVM [< it 1 Ed. Remarque: Drupal + HHVM & nbsp fonctionne assez bien en novembre 2014. Voir aussi "Running Drupal on HHVM" par William Hurley au Forum One], qui a supprimé ce qui aurait été un gros obstacle pour l'adoption.

Un autre projet, HippyVM, fournit une approche similaire à la création d'une machine virtuelle alternative pour php. Il n'est pas encore prêt, mais il est de nouveau en vue de l'exhaustivité-ce qui en fait une option potentielle sérieuse de Drop-in. Ses partisans affirment qu'il est encore plus rapide que HHVM.

Qu'est-ce que cela signifie pour le moteur Zend?

Est-ce la fin pour le Zend Engine? Pas tant qu'il gagne sur la facilité de se lever et de fonctionner, ainsi que son soutien généralisé à travers les solutions d'hébergement. Plus que cela, cependant: HHVM a jeté le gantelet. Une refonte majeure du moteur sera la base de php 7, la prochaine version majeure. Cette nouvelle version, connue sous le nom de php-ng, est en concurrence avec HHVM pour la vitesse, ainsi que l'introduction de changements qui sont une étape vers un compilateur JIT. Cela suggère que les versions futures ont encore cette direction possible comme un moyen de gagner encore plus de performances.

Éviter la fragmentation

Donc les temps sont passionnants pour la performance en php. Il existe maintenant des prétendants sérieux pour un moteur alternatif d'étincelles de concurrence pour aider à pousser les choses en avant ainsi. Pourtant, il ya un danger possible dans tout cela: le risque que les différentes implémentations du moteur mènera à différentes implémentations de PHP, où certains moteurs de soutien certaines fonctionnalités, mais pas d'autres.

Ce type de fragmentation peut ne pas conduire à de meilleurs moteurs, mais plutôt diviser les développeurs dans le besoin de choisir entre eux. Une chose qui peut combattre ceci est une spécification formelle pour la langue. Ces spécifications existent pour d'autres langages et permettent la création de différents runtimes compatibles. C'est tout à fait une entreprise pour php car il n'est pas un langage conçu, mais celui qui a grandi organiquement. L'équipe de HHVM a reconnu l'importance de ceci et a réagi en créant une spécification pour PHP.

Pour la première fois, il existe de véritables prétendants pour d'autres façons de faire fonctionner PHP. La concurrence entre ceux-ci est déjà voir des augmentations de performance significative, ce qui semble être quelque chose qui est ici pour rester avec des avantages permanents accumulés pour l'ensemble de la communauté PHP.

Dossier de l'auteur invité

  • Nom: Richard Miller
  • Twitter: @mr_r_miller
  • Site Internet : richardmiller.co.uk
  • Affiliation au travail: SensioLabs UK
  • Rôle de Foss: «la plupart de mon implication de Foss est dans la communauté de symfony, blogging, parlant aux groupes d'utilisateurs et aux conférences et contribuant à la documentation.»
  • Projets en cours: "PhpSpec, quelques extensions Behat/PhpSpec, en essayant d'apprendre Haskell en écrivant un outil pour générer php avec elle."
  • Quand/qui php vous avez commencé avec: "4 quelque chose, environ 2004"
  • Richard Miller est consultant technique senior chez SensioLabsUK et a 10 ans d'expérience en développement commercial. Actuellement axé sur le processus de développement en utilisant BDD et DDD pour faciliter la communication et l'architecture d'application. Bouleverse les gens en ne les laissant pas utiliser l'héritage et d'autres instructions ou des méthodes sur quelques lignes de long.