32 votes

Quelles sont les limites architecturales de PHP?

J'ai été la lecture de l'article "PHP Suce, Mais Il N'a pas d'importance" par Jeff Atwood.

Dans les commentaires, il écrit:

Cela dit, je suis absolument pense qu'il est important pour PHP devs d'être conscient des limitations architecturales de PHP, et de comprendre les solutions de rechange.

Ce sont ces limitations et comment se comparent-ils avec d'autres scripts / faiblement typé langues?

Aussi, quelles sont les alternatives dans ces conditions où les restrictions doivent être évités?

29voto

NikiC Points 47270

En gros, il existe deux limites que je vois:

PHP est entièrement synchrone de la langue. Ceci a un impact sur les choses que vous pouvez facilement mettre en œuvre en PHP et qui n'est pas. Par exemple, la mise en œuvre d'une Longue Interrogation conduit application de chat n'est pas trivial, car PHP aurait besoin de bloquer un processus pour chatter. Je ne dis pas que c'est impossible, vous pouvez pirater de contourner cette limitation en utilisant du PHP Démon de la bibliothèque. Je dis juste que c'est un des cas où d'autres langues, comme le JavaScript, sont plus appropriés (NodeJS).

PHP est lente. S'il vous plaît ne pas comprendre ce une une infraction. C'est un fait que PHP - mise en place par le Zend - est lente par rapport à d'autres langages de script. Cela est généralement pas de problème lors de la construction de sites web, mais de toute évidence vous ne pouvez pas faire certaines choses: la mise en Œuvre d'un lancer de rayons en PHP est certainement une mauvaise idée - alors qu'en JavaScript, vous pouvez le faire.

Mais en dehors de cela, je pense que PHP est assez polyvalent. Vous pouvez l'utiliser pour presque n'importe quoi - et je le fais ;)

20voto

Pavel Koryagin Points 734

Jetez un oeil à la date. L'article a été écrit en 2008.

Cela signifie, que si vous allez voir le PHP5.3 avantages, vous y trouverez beaucoup de choses, comme les fermetures et les espaces de noms, qui étaient dans d'autres langues avant. Certains d'entre eux est déjà affecté l'architecture de la célèbre cadres, à l'instar de la Symphonie.

Et cette liste ne sera jamais complet.


Pendant ce temps, je rencontre beaucoup de gens qui pensent que "la faiblesse de frappe" la langue est un problème architectural lui-même.

Ensuite, certaines personnes pensent que inline syntaxe regex est une bonne chose, par exemple, en JavaScript, mais d'autres pensent, que "l'autre langue" doit être écrite dans la chaîne de valeurs constantes, comme en PHP. Etc.

15voto

coreyward Points 26109

Je vais prendre un coup de couteau à présent sans être trop dans le nitty gritty:

  • De la conception initiale de PHP comme un ensemble de fonctions affiche toujours à travers.
  • Orientée objet, les modèles qui ont été mis en œuvre dans la plus récente de PHP 5 versions sont toujours à moitié cuit, et l'absence d'héritage multiple (ou "mixin"), une bonne prise en charge du module, et sont conçus pour être compatible avec le CoF (collection de fonctions) de la conception.
  • La redéfinition de méthode et les rappels ne sont pas de support natif.
  • Fermetures. Ils sont là, mais ils sont très faibles.
  • Les erreurs vs Exceptions - les méthodes sont incohérentes dans lequel ils utilisent (encore merci à CoF), et de gestion d'erreur est à moitié cuit.

Je suis sûr que je suis marcher sur les pieds de quelqu'un ici, et je vais l'avoir toute la foule en colère, mais je suis aussi sûr que je ne l'ai toujours pas touché à tout. C'est en grande partie subjective, mais il est facile de voir qu'est-ce que le dégoût lorsque vous empilez PHP en place à côté de Ruby ou Python.

14voto

Michael J.V. Points 3137

Je ne trouve pas ça bizarre plus que tous "PHP SUCE" les articles sont à venir à partir de développeurs habitués à établi sur les technologies Microsoft.

Ce que je trouve bizarre sont des énoncés qui indiquent que PHP est un code spaghetti. C'est complètement à l'auteur du code si le code sera spaghetti ou si il va utiliser certaines règles de conception lors de l'approche du problème.

La raison beaucoup de code PHP n'est spaghetti code est parce que des exemples et des tutoriels sont tels qu'ils n'enseignent pas aux débutants les bonnes pratiques de codage. Aussi, les gens sont prompts à saisir des exemples comme hello world ou de le connecter à MySQL, faire une requête et boucle sur le résultat - mais c'est ça, c'est là que TOUS les tutoriels arrêter. Je n'ai toujours pas trouvé un tutoriel qui couvre les points suivants:

  • qu'est ce qu'un cadre et ce qu'il permet avec
  • ce sont des structures de données et types de données (expliqué d'une manière un humain normal peut comprendre)
  • qu'est ce qu'un tableau, quelles sont les dimensions du tableau, comment faire des tableaux de travail, ce sont des tableaux utiles pour
  • qu'est-ce que le code orienté objet, pourquoi le code orienté objet, comment PHP le faire, ce qui est considéré comme bon, pourquoi y at-il des modèles là-bas et ainsi de suite

Comme vous pouvez le voir, un programmeur débutant ne sera pas pris la peine de les apprendre tous les points énoncés ci-dessus, je le sais parce que j'étais un débutant trop et a fait toutes les erreurs de débutants. Cependant, même si quelqu'un ne sait pas comment programme, ils peuvent toujours créer des applications utiles.

De nombreux populaire, les scripts ont été écrits par des gens qui savaient CE qu'ils veulent réaliser, cependant, ils ne savent pas COMMENT faire pour concevoir l'environnement (cadre) dans lequel ils vont déployer leur code php. C'est pourquoi nous voyons des scripts qui deviennent incroyablement populaire en raison de la facilité de leur utilisation en tant qu'utilisateur normal qui sont difficiles à étendre le regardant comme un développeur, en utilisant bizarre les noms de fonction, les conventions de codage et pas de commentaires.

Aussi, ce qui est ridicule, c'est de dire que PHP est lente, ce qui est un non-sens absolu. Quand je viens à travers cette déclaration, j'ai envie de me tirer une balle dans la tête pour la lecture d'un tel une entrée de blog.

A savoir plusieurs choses avant de faire une telle déclaration:

  • PHP est un langage de script, cela signifie que l'interprète est appelé à chaque fois que quelqu'un demande une page PHP qui prend BEAUCOUP de puissance CPU. Qui a été résolues par l'utilisation de bytecode mécanismes de mise en cache comme APC qui stocke la copie de pré-interprété morceau du script dans la mémoire. Les résultats sont impressionnants, et je ne plaisante pas - l'exécution de certaines de mes scripts va de 20 millisecondes à 1 microseconde, où certains avantages "que" 5 fois. C'est un système qui sert 1 milliers d'utilisateurs simultanés. Maintenant, si quelqu'un veut me dire que 1 microseconde est lent (ou 5 millisecondes) - je prends ça pour des conneries.

  • PHP n'est pas la seule chose impliquer dans le service d'une page web. Il y a également sous-jacente serveur (Apache) qui a ses propres problèmes, il y a MySQL qui exécute des requêtes - et qui a dit que toutes les requêtes sont optimales? Il y a le réseau, il y a le disque dur, il y a le CPU, il y a des tonnes d'autres processus. Configurer Apache avec PHP-FPM, optimiser MySQL pour effectuer de bonnes sur 8 core avec 16 go de ram, l'utilisation de l'APC, l'utilisation de Memcache - et voilà, vous avez une incroyablement rapide, évolutive système capable de fournir une quantité incroyable de trafic. Les langues que PHP est comparé sont souvent compilé en bytecode puis exécuté par

  • Vous pouvez étendre PHP vous-même. En supposant une fonction PHP est lent, RIEN n'empêche quiconque de créer un .donc en C qui est capable de faire le travail plus rapidement et ensuite accrocher le tout auge extension dans PHP. Pas que je sache ce serait un tel travail que nécessiterait, mais une telle chose EST possible.

Malheureusement, et je dis malheureusement parce que je respecte certains programmeurs et admirer leur travail (et je ne suis pas un PHP fanboy) mais ça me fait mal quand je la vois, sans instruction, d'expérience et de commentaires subjectifs sur un outil qui s'étend de la désinformation.

Quant à savoir pourquoi de grands sites web d'utiliser PHP - parce que c'est rapide. Parce qu'ils ont posé les fondations correctes avant de commencer les projets. Parce que c'est gratuit, extensible et évolutive. Parce qu'elle suit la syntaxe du C. Parce que vous pouvez l'étendre quand vous en avez besoin pour être plus rapide. Parce qu'il fonctionne sur un système d'exploitation libre. Car il est facile à utiliser.

3voto

Revenant Points 1200

PHP est l'amélioration de tous les jours. Il est open source et utilisé partout dans le monde. Cela dit, lorsque vous avez un problème, il est plus que probable que vous trouverez votre solution ou obtenir de l'aide plus rapidement que toute autre langue.

La raison de cet article, je crois que c'est simple. Si vous (ou dans une autre programmeur) utilisé pour coder en C++, Java, etc.. il y avait beaucoup de possibilités, telles que le codage et la programmation orientée objet en PHP a été limitée dans le début.

C'est une bonne chose que PHP dispose de nombreuses fonctions de fonctions / méthodes / classes de sorte que vous n'avez pas à passer des heures à le code d'une fonction / classe / méthode de PHP a déjà.

Vous n'avez pas à (et vous ne devriez pas) essayez de mémoriser toutes ces fonctions. Il est inutile de mémoriser tous d'entre eux (dont on fait quoi, comment l'utiliser, etc). Imaginez que vous travaillez sur un projet qui vous a pris 4-5 mois pour le terminer (ouais big one (: ) Vous n'allez pas utiliser toutes ces fonctions dans tous les projets, et vous finirez par oublier ce qu'ils ont fait puisque vous ne les utilisez pas souvent.

Le point est, vous devriez connaître la syntaxe de PHP. Lorsque vous avez besoin de faire quelque chose, vérifiez d'abord si PHP a déjà ce que vous voulez faire dans sa bibliothèque. Consultez le manuel pour voir comment l'utiliser. De cette façon, vous pourrez également APPRENDRE (PAS MEMORIEZE) ceux que vous utilisez souvent, et cette information sera difficile à oublier.

PHP ou tout autre langage de programmation, c'est comme une langue normale laquelle nous, les humains utilisent au quotidien pour communiquer les uns avec les autres. Si vous ne l'utilisez pas, vous oublierez.

PHP 5.3 et au-dessus apporté de nombreuses fonctionnalités. Caractéristique statique est l'un des plus grands pour moi. Il m'a rendu la vie beaucoup plus facile que je ne peux même pas commencer à décrire.

Depuis PHP est célèbre et open source de langage de script web, Facebook de l'équipe de développeur a créé HipHop.

Ce que le hip hop n'est, prend les données à partir de PHP et l'envoie à C++. C++ n'tous les processus et envoie les résultats à PHP pour la sortie.

L'idée de hip-hop était de faire de Facebook d'utiliser moins de serveurs et d'améliorer l'affichage de la page fois.

Maintenant, vous me dites si cela vous semble limitée et / ou de ralentir pour vous?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X