Un schéma approximatif de l'architecture du dernier projet à grande échelle auquel j'ai participé.
Ce n'est qu'un aperçu de base, adapté des documents d'architecture réels et présenté d'une manière qui ressemble à une approche typique à n niveaux combinée à une approche MVC typique . Comme vous pouvez le voir, la logique et les niveaux de données sont connectés via une couche de service, et plus spécifiquement une API REST , qui a été inspirée par Recess , un framework PHP moins connu.
Ne réinventez pas la roue
Je travaille avec trois cadres:
Cadre Zend
Le géant des frameworks PHP, avec une base de code impressionnante et une liste complète de fonctionnalités. Sur les applications à grande échelle, vous vous retrouverez à peaufiner le cadre le plus souvent, et je trouve la base de code de ZF la plus agréable à travailler. Mais attention, ce n'est pas un framework d'entrée de gamme .
Kohana
Kohana a commencé comme un fork de CodeIgniter, et c'était une raison suffisante pour que je ne l'utilise pas, au départ. De nos jours, il est devenu un cadre solide et élégant qui se différencie les uns des autres en suivant une approche hiérarchique MVC . HMVC permet une plus grande extension de la modularisation que MVC . Pour le projet dans le diagramme, j'ai adapté le HMVC de Kohana à ZF, mais j'ai commencé à utiliser Kohana pour des projets plus petits et à le considérer aussi pour les plus grands.
CodeIgniter
Je ne l'utilise qu'en raison d'un projet hérité dont j'ai hérité, à éviter si possible.
Comme l'ont souligné les autres réponses, un ORM est toujours utile. J'utilise beaucoup Doctrine , et vous devriez jeter un œil à ses nouveaux mappeurs pour CouchDB et MongoDB . L'évolutivité est indispensable sur les applications à grande échelle et vous devez évaluer les solutions NoSQL .
Cela dit, la chose importante à retenir est que les applications plus grandes ont généralement des défis uniques. Vous devriez évaluer toutes les solutions tierces populaires qui existent, et vous gagnerez probablement beaucoup de quelques-unes des solutions obscures. Lorsque j'ai évalué Recess pour la première fois, il était loin d'être prêt pour la production, mais son approche en a essentiellement fait le projet.
Performance
Sur les sites typiques que vous pouvez vous en sortir avec simple , la mise en cache de sortie et la mise en cache d'opcode mais sur des applications à grande échelle , vous devriez vraiment envisager la mise en cache de la mémoire, qui est le plus souvent construit autour Memcached .
xdebug est principalement connu sous le nom de débogueur, mais peut également servir de profileur . J'ai récemment commencé à utiliser Zend Server et j'adore absolument ses fonctionnalités de traçage de code . Malheureusement, ceux-ci ne sont pas disponibles dans l' édition communautaire , mais xdebug est une alternative assez décente.
Si vous utilisez Apache, assurez-vous d' optimiser l'enfer . nginx et lighttpd sont apparemment de meilleurs choix , en termes de performances, mais je ne les ai pas beaucoup utilisés et je ne peux pas vraiment le dire.
Quant à la base de données, la mise en cache des requêtes et des résultats de Doctrine fait des merveilles, en particulier combinée avec memcached . Et bien sûr, nous ne pouvons pas oublier l'avant. L' équipe Performances exceptionnelles de Yahoo a rassemblé une liste complète des meilleures pratiques . Je ne suis pas vraiment un développeur front-end, mais j'ai vu des résultats incroyables sur des projets solo.
Enfin PHP a un tout nouveau mécanisme de collecte des ordures , qui mérite d'être étudié.
Sécurité
Le monde de la sécurité PHP est pour le moins chaotique. Je ne suis pas un expert, alors traitez ce qui suit comme des conseils génériques:
Projet de sécurité des applications Web ouvertes
Beaucoup de bonnes choses là-dedans, mais pour un aperçu rapide, vous devriez commencer par la liste des dix premiers . Et recherchez des solutions PHP pour ces vulnérabilités courantes.
Vulnérabilités de pile
Une bonne habitude est de surveiller périodiquement les bogues ouverts de PHP . Même si vous n'êtes pas un expert vous-même, il existe presque toujours des astuces pour contourner les menaces de sécurité. Et bien sûr, vous devez étendre l'habitude à toutes les autres parties de la pile, en particulier les plus vulnérables, comme le serveur Web et la base de données.
La foule à IT Security Stack Exchange peut vous aider avec des réponses plus instruites.
Lectures complémentaires