02-08-2014, 02:26 PM
Citation :Est-ce que symfony 2 est assez performant pour un jeu en ligne ou (j'espère) des milliers (2000-3000) de personnes peuvent se connecter en meme temps sur le serveur sans que ce dernier ne lague ?
Oui bien sûr. Comme tous les frameworks (Code Igniter, Laravel, Yii, Zend Framework, Ruby on rails etc.), Symfony représente une certaine charge (overhead) à chaque fois que tu dois passer par celui-ci mais ce temps d'exécution tend à se réduire et à devenir négligeable au fur et à mesure que ton application web gagne en popularité. Si tu arrives à avoir 2000-3000 personnes sur ton jeu, ta base de données sera certainement très sollicitée et ce sera certainement elle qui deviendra le goulot d'étranglement du ton site (bottleneck) plutot que les quelques milisecondes nécessaires au chargement du framework.
Citation :En effet j'ai entendu que symfony s'optimisait grace au cache mais comment faire pour un jeu en ligne qui change d'un joueur à un autre ?
Ce n'est pas parce que chaque joueur est différent qu'il n'est pas possible de mettre en place un système de cache performant. Naturellement, ce système de cache devra être un minimum intelligent. En effet, on voit mal comment un système de cache HTTP comme varnish pourrait être mis en place dans le cadre d'un jeu en ligne.
En revanche, d'autres systèmes de cache implémentés au niveau de l'application elle-même peuvent s'avérer très utiles. On pourrait par exemple penser à suvegarder une liste de commentaires, topics, annonces (etc.) dans un fichier pour pouvoir les resservir par après sans devoir passer par la base de données. Là dessus, les frameworks sont en général très utiles car ils viennent avec tous leurs bagages et outils déjà programmés qui ne demandent qu'à être utilisés.
L'un des plus prometteur pour un jeu en ligne, serait de mettre en place un système de cache au niveau de la base de données, plus précisément au niveau des entités gérées par l'ORM. Si tu utilises doctrine, tu seras certainement intéressé par ce lien. Personnellement, j'attends avec impatience la venue du second-cache level avec doctrine.
Citation : Existe-t-il d'autres méthodes pour optimiser symfony ?
Il existe d'autres méthodes pour optimiser du code php. Tu peux par exemple utiliser un système de cache d'opcode (très facile à mettre en place). Tu peux aussi, avec symfony, décider demettre en cache la totalité de l'output d'un controleur (dans la section: Le cache pour les flemmards). Il existe encore quelques petits réglages minimes que tu peux faire et qui sont expliqués ici.
Enfin, n'oublie jamais que l’environnement de développement n'a rien à voir avec l’environnement de production. Avoir un code d'une application symfony2 qui prend 2 secondes à s'afficher (ce qui peut paraître énorme) en environnement de développement est une chose tout à fait normale: tes fichiers css et javascripts ne sont pas compilés et sont rechargés à chaque requête, tes templates Twig ne sont pas mis en cache, certains fichiers de configurations de symfony sont aussi recalculés à la volée etc.