2010-04-10 9 views
11

J'ai vu ce post sur Sitepoint citant un communiqué par Rasmus Lerdorf qui va (selon Sitepoint) comme suit:Faisant usage de C++ pour accélérer PHP

Comment pouvez-vous faire PHP rapidement? Eh bien, vous ne pouvez pas "sa réponse rapide: PHP n'est tout simplement pas assez rapide pour évoluer vers les niveaux de Yahoo.Php n'a jamais été conçu pour ce genre de tâches." Tout langage basé sur un script n'est tout simplement pas assez rapide ". qui est nécessaire pour vraiment les systèmes web massifs que vous avez à utiliser compilé des extensions C++ pour obtenir vrai, l'architecture échelonnable. C'est ce que Yahoo fait et donc faire beaucoup d'autres poids lourds PHP.

Intrigué par l'instruction (sans parler de la fait que jusqu'à présent, tout ce que je faisais en PHP était de petites applications à base de bases de données), je me demandais comment je pouvais « utiliser C++ compilé extensions » avec PHP.

idées ou ressources?

+0

>> Jusqu'à présent, tout ce que je faisais en PHP était de petites applications basées sur une base de données << Et pour que PHP soit très bien ;-) – igouy

Répondre

15

Ne vous embêtez même pas. PHP est lent ... Vous pouvez créer un mélange de C++ et PHP, mais vous aurez besoin de faire beaucoup de profilage pour comprendre ce qui est lent. Et c'est surtout ... PHP.

Voir ci-dessous:

Il suffit d'écrire en C++ en premier lieu. C'est aussi simple que d'écrire en PHP avec un framework web C++ moderne et une bonne connaissance en C++.

Où commencer:

  • CppCMS - cadre évolutif MVC axé sur la performance.
  • Wt - cadre qui imite Qt pour le web (ne sait pas comment il évolue bien).
+3

J'ai fait un site web en C++; C'était très agréable à faire car les outils C++ (IDE, débogueurs, profileurs, Visual Studio, Intellisense, etc.) sont beaucoup mieux que PHP. Le seul ennui était les temps de compilation. –

+0

+1 mais beaucoup plus plus si vous pouvez donner plus de détails. Cela semble extrêmement intéressant. Site Web en C++ ... – Mawg

+0

@mawg - il suffit de suivre le lien CppCMS ... il y a beaucoup de détails, de logique etc. – Artyom

2

Il ya une introduction à l'écriture des extensions php au http://devzone.zend.com/article/1021 (publié en 2005, peut-être un peu obsolète).
Vous pouvez également utiliser des outils tels que swig pour créer des wrappers pour le code C/C++ existant.

5

Lent est un terme subjectif. Facebook (le plus gros site en ligne) est construit sur PHP et je ne les ai jamais entendus se plaindre. Au contraire, dans leur poursuite de la vitesse le développé et récemment publié HipHop Si vous allez pour PHP ultra-rapide c'est là que vous devriez vous concentrer. C++ pour le web est peu pratique car il doit être compilé et ralentira le processus de développement.

Parce que: Why are so many web languages interpreted rather than compiled?

http://www.bitsandbuzz.com/article/compiled-web-vs-interpreted-web/

+3

Remarque- HipHop n'a augmenté les performances qu'environ 2 fois car PHP est des langages dynamiquement typés et n'a pas de moyen naturel d'être compilé en C++ ... Ils ont donc beaucoup de base de code en PHP et s'y sont accrochés ... – Artyom

+5

@Artyom - Je déteste vraiment être «coincé» avec une base de code qui faisait des centaines de millions de dollars. – zombat

+0

Les gens devraient comprendre la différence entre la programmation pour le Web et la programmation pour un ordinateur personnel. La programmation pour un ordinateur domestique place la vitesse en premier, c'est pourquoi les langages de bas niveau fortement typés comme C et C++ sont préférables, car ils vous offrent le plus haut niveau d'optimisation de la vitesse. Alors que sur la programmation de contrepartie pour le web est plus soucieux de rendre le processus de programmation plus facile et plus rapide. La vérité est que lorsque nous parlons de web, il est moins cher d'ajouter un serveur pour accélérer le mauvais code que d'engager un bon programmeur pour écrire du code plus rapidement. –

4

Le goulot d'étranglement est généralement E/S ou la base de données des requêtes plutôt que la langue que vous utilisez.

+1

Absolument! Serveurs Web également mal configurés, pas d'utilisation de Cache, HTML et JavaScript mal écrits. –

1

Merci à Artyom pour le lien vers ce lien informatif,

http://idleprocess.wordpress.com/2009/11/24/presentation-summary-high-performance-at-massive-scale-lessons-learned-at-facebook/

qui dit, parmi bien d'autres, "C++ interopérabilité difficile."

C++ nécessite beaucoup d'efforts pour écrire un site web. Pourquoi ne pas choisir une langue entre C++ et PHP, disons Python qui est exécuté par bytecode JIT, et je comprends est relativement facilement étendu par C++.

+1

Avez-vous essayé l'analyse comparative IronPython pour de vraies applications? Ce n'est pas beaucoup plus rapide que Python mais encore beaucoup plus lent que C++. Pourquoi? Python langage dynamiquement typé. Même raison HipHop donne seulement un gain de x2 pour les applications PHP compilées en C++. – Artyom

+0

@Artyom: mais est-ce plus rapide que PHP? – Potatoswatter

+0

PHP et IronPython/Python ont des performances similaires +/-. – Artyom

3

La première question qui vient à l'esprit est la suivante: développez-vous pour un site Web traitant plus d'un million de visites par heure? Parce que sinon, alors vos coûts sont tous dans le développement logiciel, et vous obtiendrez plus pour votre argent en ajustant votre code PHP actuel et en ajoutant du matériel que de migrer même une partie du code vers C ou C++. Voir aussi http://shootout.alioth.debian.org/ Notez les comparaisons de taille de code.

Oui, au-dessus de ce niveau (environ), les coûts de votre matériel commencent à augmenter au point où cela vaut la peine de développer dans un langage compilé. La prochaine chose à garder à l'esprit est que, même s'il est vrai qu'un code compilé très bien écrit surpassera presque toujours un code interprété similaire bien écrit, lorsque la qualité du code est même légèrement inférieure à la perfection, la différence diminue. l'effet variera en fonction de la langue ainsi que de la capacité des programmeurs. Je m'occupe actuellement d'une application Web développée en Java (qui fonctionne en code natif) qui nécessite deux fois plus de ressources matérielles pour fonctionner plus lentement qu'un système comparable que j'ai géré, écrit en PHP par des programmeurs. large éventail de niveaux de compétences. Bien que cela contredise directement ce que la plupart des programmeurs pourraient considérer comme du bon sens, je suis confiant de dire que l'argument interprété/compilé n'est pas le seul. Il y a beaucoup d'organisations/individus qui développent encore des langages interprétés, par ex. Groovy, Apex.

C.

0

Pour les grands calcul et de traitement C++ peut être utilisé avec php. Et pour un processus plus léger, seul PHP est suffisant. Tout en travaillant sur le traitement des données ou les applications basées sur le calcul, C++ peut vous aider. S'il vous plaît pas, vous devez utiliser un truc ici.

Il est nécessaire de créer un processus serveur (daemon) qui reste en attente pour la requête. Ce processus de démon est déjà compilé et contient le code de traitement.

Donc, quand il y a une demande pour traiter les données, il le fera beaucoup plus vite que PHP et répondra avec le résultat.

On peut utiliser exec ou une fonction similaire pour exécuter un exécutable démon.