PHP et performances

17

J'entends toujours que PHP est pour les sites Web moyens et petits, tandis que .NET et Java pour les applications d'entreprise. Ma question concerne PHP. Pourquoi PHP n'est-il pas une bonne option pour les applications Web d'entreprise? Est-ce parce que si l'application Web devient plus grande, alors PHP sera plus lent car il s'agit d'un langage interprété?

Je sais que le monde de l'entreprise choisira .NET ou J2EE en raison de l'intégration avec leurs produits et en raison des services d'arrière-plan, etc. Cependant, si nous avons juste PHP pour créer des sites et des applications Web, comment pouvons-nous l'utiliser pour bien fonctionner avec grands sites?

En bref, existe-t-il une relation entre les performances de PHP et la taille du site Web? Quels sont les facteurs qui font que PHP n'est pas une option appropriée pour les grands sites?

Naif
la source
1
Mediawiki (le moteur de wikipedia) est écrit en PHP et ils l'ont fait bien fonctionner, mais cela ne prouve rien. Cela pourrait être un cas de niche.
Michael K
2
@MichaeltheGhost utilisant des sites dans le top 50 d'Alexa (et peut-être même un peu plus) sont de mauvais exemples parce que leur volume est à un niveau si extrême que leurs solutions sont hautement personnalisées et affinées pour ce niveau de trafic et ne sont pas vraiment les mêmes plus de technologie.
Ryathal
1
Facebook utilise également PHP. Notez également que cela signifie des choses sur l'évolutivité, pas sur les performances, mais vous connaissez la différence, non? Un autre exemple est freemobile, qui a réécrit son site Web en PHP à partir de Java, pour des raisons d'évolutivité.
deadalnix
"Actuellement, la plupart du code PHP dans Mediawiki de Wikimedia Foundation utilise le compilateur HHVM JIT, bien que certains services continuent à utiliser Zend Engine PHP." en.wikipedia.org/wiki/Wikipedia:FAQ/Technical c'est ce que Facebook a créé pour accélérer php (c'est un traducteur php vers c ++ qu'ils compilent ensuite). ça marche, vous ne pouvez pas dire juste parce que c'est écrit en php la vitesse sera toujours la même. Cela dépend de ce que vous faites avec le code dans ce sens ...
pqsk

Réponses:

19

La performance n'est probablement pas l'un des facteurs. Pour un langage dynamique, PHP fonctionne plutôt bien; selon la tâche, il pourrait ou non battre d'autres technologies. Le modèle d'application est tout simplement trop différent pour le comparer directement avec Java ou ASP.NET. Même s'il y a une différence de vitesse mesurable, elle n'est pas grande et elle est probablement linéaire, ce qui signifie qu'elle peut être résolue en y ajoutant plus de matériel. En outre, le langage de programmation lui-même est rarement le goulot d'étranglement - les algorithmes, l'accès à la base de données, la bande passante réseau et les E / S en général sont les coupables habituels, sauf si vous écrivez quelque chose de vraiment gourmand en ressources processeur.

Les raisons pour lesquelles ASP.NET ou Java sur PHP sont les plus probables sont les suivantes:

  • Intégration de plateforme. ASP.NET offre une intégration étendue avec .NET et le système d'exploitation Windows sous-jacent.
  • Objectif général. PHP a été conçu spécifiquement pour le Web, tandis que .NET et Java sont des plates-formes à usage général. En utilisant Java ou .NET, vous pouvez coller à la fois les frontaux de bureau et Web sur le même code partagé avec peu d'effort, tandis que PHP n'est pas très approprié pour écrire des applications de bureau.
  • Fonctionnalités d'organisation du code. Java et .NET ont été conçus pour OOP depuis le début, tandis que OOP en PHP est un peu une réflexion après coup. PHP a introduit les espaces de noms très récemment, et ils sont limités et maladroits par rapport à ce que .NET et Java ont à offrir. La programmation de type entreprise repose généralement fortement sur la POO, ce qui fait de PHP le moindre candidat.

Une autre raison de l'effet perçu est que PHP est gratuit (comme dans la bière) et omniprésent - chaque société d'hébergement Web partagée bon marché a PHP dans son package standard, mais un serveur .NET ou Java va vous coûter beaucoup plus cher. Par conséquent, une énorme masse de petits sites Web utilise PHP, non pas parce que c'est le meilleur outil pour le travail, mais le seul à portée de main.

Cela ne veut pas dire que PHP ne convient pas aux grands projets - il ne va tout simplement pas bien avec le type de programmation «entreprise». Ses points forts se trouvent ailleurs, et si vous pouvez les exploiter, vous pouvez tout aussi facilement créer des applications à grande échelle que n'importe quelle autre technologie Web.

tdammers
la source
2
Un petit problème, vous pouvez obtenir l'hébergement partagé ASP.NET pour le même prix que l'hébergement partagé LAMP. Le problème est que les premiers endroits que la plupart des gens trouvent lorsqu'ils recherchent sont ceux qui sont commercialisés auprès des petites et moyennes entreprises et sont plus chers.
jfrankcarr
+1, c'est très bien dit et résumé. Le goulot d'étranglement pour la plupart des applications peu performantes est rarement la langue.
GrandmasterB
1
vrai, mais ne pense pas que Java soit une solution - j'ai eu la malchance d'utiliser beaucoup d'applications «Entreprise» de sociétés comme Oracle. Presque tous pourraient être remplacés par une application PHP OSS avec peu de réduction des fonctionnalités, mais une augmentation considérable des performances et de la facilité d'utilisation.
gbjbaanb
3
@gbjbaanb: Java n'est pas une solution dans ce contexte car il n'y a pas de problème. Et que quelque chose soit open source ou non n'a absolument rien à voir avec le sujet.
tdammers
@GrandmasterB oui et non. Java par exemple, a beaucoup de primitives synchronisées en interne, et pas PHP. Il faut plus de discipline pour écrire du code java évolutif. freemobile est un exemple réel de cet effet. Mais, comme l'évolutivité ne dépend pas seulement du frontend (les bases de données par exemple sont très importantes ici), vous devez quand même y penser.
deadalnix
13

Vous confondez le trafic («site Web petit et moyen» signifie généralement un site Web avec un trafic petit à moyen), avec le degré de complication de la logique métier (site Web simple ou solution d'entreprise). Dans le second cas, la performance n'est pas le facteur clé.

Par exemple, Facebook est un site Web à fort trafic, mais ce n'est pas une application d'entreprise. D'autre part, il existe une pléthore d'intranets basés sur des serveurs d'applications Java, qui ne pourraient pas gérer le trafic d'un site Web de taille moyenne.

PHP en termes de performances n'est pas la meilleure option, mais ce n'est pas si mal non plus. Surtout en comparant avec d'autres langages dynamiques. Cependant, encore une fois, les performances brutes ne sont pas le facteur le plus important. La création de sites Web à fort trafic consiste davantage à optimiser l'évolutivité au niveau architectural.


Pourquoi PHP est-il si méprisé par l'entreprise? Il y a peu de causes, la première serait sa terrible réputation en matière de sécurité . Deuxièmement, il est perçu comme un langage pour les amateurs créant un code de spaghetti HTML-PHP laid et ingérable. Cette perception persiste, même s'il existe des cadres MVC matures. Je suppose qu'avoir l'auteur original de PHP soutient que vous n'avez pas besoin d'un framework n'aide pas. Le fait que ces amateurs désemparés avec peu ou pas de compétences en programmation s'appellent eux-mêmes "programmeurs PHP" n'aide pas non plus. La troisième raison est que tout programmeur expérimenté sera d'accord, que PHP est simplement mal conçu comme langage. Vous pouvez clairement voir qu'il a été conçu par un webmaster,

Et oui, en entreprise, tout tourne autour de l'intégration de systèmes, où PHP ne brille pas non plus. Avec suffisamment d'effort, vous pouvez créer des modules C. Il existe un pont PHP-Java, qui est assez fastidieux à utiliser. Au-delà, vous n'avez pas grand-chose. Les tentatives de création de Boost :: PHP (intégration avec C ++) ont échoué. Les clones PHP fonctionnant sur JVM sont loin d'être proches de 100% de compatibilité avec PHP (en passant, il n'y a pas de définition de langage PHP formelle, la seule référence est l'implémentation par défaut).

vartec
la source
6

Aucune idée pourquoi les gens prétendent que PHP est pour les sites Web de petite et moyenne taille. À ma connaissance, ce n'est pas vrai. Je connais certains sites Web soutenus par PHP qui ont commencé petit, puis sont devenus les 100 meilleurs sites Web dans mon pays. Ils utilisent toujours PHP et n'ont pas l'intention de changer quoi que ce soit à ce sujet.

La chose, qui pourrait conduire les gens à une telle conclusion, c'est que dans le cas de Java (et je suppose aussi avec .NET), l'effraction des applications est un terme fréquemment évoqué dans la documentation et la littérature. La plupart des serveurs d'applications prennent en charge une certaine forme de clustering qui permet l'ajout rapide de «puissance» ainsi que la croissance de la popularité. Dans le cas de PHP, vous devez créer un cluster vous-même. Vous pouvez le faire de plusieurs façons, en utilisant différents composants et vous devez en savoir un peu ou deux sur le fonctionnement interne de PHP. Cela fait probablement penser aux gens qu'avec PHP, un seul serveur (et donc un site Web petit ou moyen) est une impasse pour PHP.

Jacek Prucia
la source
3

Il n'y a pas que la seule application Web d'entreprise. Dans le monde de l'entreprise, vous disposez généralement d'un système d'entreprise complet, où le composant WebPart est assez petit par rapport à l'ensemble du système. Il existe de nombreux systèmes sous le Web qui effectuent le traitement par lots, la messagerie de file d'attente, l'intégration d'entreprise, les passerelles et bien d'autres. Événement au sommet, il pourrait y avoir non seulement

Alors que PHP est bon pour le web, ce n'est pas bon pour les autres types de systèmes distribués. Et puisque vous faites tous ces systèmes en Java ou .NET, il est facile de créer également la pile Web sur la même plate-forme plutôt qu'en PHP.

m3th0dman
la source
1

Je dirais que les problèmes avec PHP proviennent moins des performances qu'un historique de failles de sécurité. Bien qu'il soit sans aucun doute possible d'écrire un site Web de toute taille ou complexité particulière en PHP et de maintenir la sécurité, à mesure que la complexité augmente, le maintien de la sécurité a tendance à devenir plus difficile.

Java, d'autre part, a été conçu avec au moins quelques idées sur la sécurité dès le premier jour. Bien que ceux-ci ne correspondent pas entièrement à la plupart des déploiements actuels (la pensée originale était principalement axée sur les applets, pas sur les servelets), cette accentuation signifie que ses fonctionnalités ont tendance à mieux s'adapter à la production de code sécurisé. Et, bien sûr, il ne s'est pas arrêté non plus - puisque les applets sont pour la plupart un problème mort maintenant, Java a été redéfini pour souligner le rôle côté serveur qu'il occupe maintenant (principalement).

Étant donné que .NET tente au moins de concurrencer presque directement Java, il offre à peu près le même type de fonctionnalités et de capacités à cet égard. Vous pouvez discuter (et les adhérents des deux camps le font) sur la question de savoir si Sun ou Microsoft font un meilleur travail à cet égard, mais le simple fait que les deux ont des équipes de personnes qui essaient vraiment de travailler dessus leur donne un avantage assez sérieux sur PHP dans ce domaine. le respect.

Jerry Coffin
la source
0

1) Performance: plusieurs réponses ici sont trompeuses sur ce point.
Le projet Phalanger (que j'ai utilisé avec succès dans le passé) vous permet d'utiliser du code C # dans PHP et vice-versa, ou de passer complètement de l'un à l'autre langage. Vous devrez probablement faire quelques changements, mais au fur et à mesure qu'ils y travaillent, cela va de mieux en mieux.
Mon point est, ils ont découvert qu'il y a un facteur moyen de 2,5 vitesses en faveur de C # (ou .NET en général, VB ferait de même, c'est MSIL à la fin).
Découvrez leurs tests avec Wordpress, il a attiré beaucoup de développeurs.

Maintenant, nous ne l'avons pas encore vu, mais il y a toujours le mec qui va vous dire que FaceBook est écrit en PHP. Faux. C'était, à l'origine, jusqu'à ce qu'ils réalisent leur erreur et écrivent HipHop pour le transformer en C ++.

EDIT: Apparemment , ce dernier bloc ne sait pas, donc ce que je voulais dire est FaceBook EST écrit en PHP, mais HipHop fait RUN comme C ++, pour améliorer la vitesse globale, CAR PHP est lent.

2) Sécurité: Comme cela a déjà été dit, PHP a une longue histoire de problèmes de sécurité.

3) Temps de développement: Faire un site Web en PHP a tendance à être plus facile, surtout avec les frameworks et tous les "constructeurs de sites" disponibles. Créer un site Web PHP bon, fiable et sécurisé est une autre histoire.

Louis Kottmann
la source
Quant au truc Facebook / HipHop, ça ne change pas grand-chose. Ils écrivent toujours des instructions PHP, n'est-ce pas? Il existe également un compilateur PHP vers Java. Si je compile tout mon code PHP avec, cela signifie-t-il que mon site est vraiment écrit en Java?
Jacek Prucia
Cela ne signifie pas qu'il s'agit de Java, cela signifie qu'il s'exécute en tant que tel.
Louis Kottmann
D'accord, vous avez raison, mais puis-je toujours prétendre que mon site est écrit en PHP? Si oui, tout le monde peut également prétendre que Facebook est écrit en PHP. En d'autres termes, tout se résume à la façon dont vous comprenez le terme «langage de programmation». S'agit-il uniquement de la combinaison d'instructions valides ou s'agit-il également d'un environnement d'exécution? Je préfère le premier sens et c'est pourquoi le truc HipHop ne change pas grand-chose pour moi. Je suis donc à peu près le type de FaceBook que vous avez mentionné :)
Jacek Prucia
D'accord, je vais le rendre plus clair. Mais pour mémoire, je suis presque sûr que la plupart des lecteurs ont compris mon point.
Louis Kottmann
Ce n'était pas une erreur d'écrire Facebook à l'origine en PHP. Quand ils ont constaté qu'il ne pouvait pas suivre l'évolutivité qu'ils ont vue, ils ont résolu le problème en utilisant HipHop. Je suppose que cela signifie que l'utilisation de PHP est une très bonne option pour tous les sites Web. Cela dit, Slashdot utilise directement Perl et cela a résolu le problème d'échelle, Wikipédia utilise du PHP simple et n'a pas non plus de problèmes d'échelle.
gbjbaanb