URL: https://linuxfr.org/news/photon-0-2-le-projet-avance Title: Photon 0.2, le projet avance ! Authors: wysman Nÿco, Yves Bourguignon, Benoît, Nils Ratusznik et Benoît Sibaud Date: 2013年03月08日T18:33:09+01:00 License: CC By-SA Tags: php, photon, mongrel2 et 0mq Score: 16 J'ai le plaisir d'annoncer la sortie de la version 0.2 de Photon. Photon est un micro Framework, écrit en PHP, pour la réalisation de site web ou d'application web. ---- [Photon](http://www.photon-project.com/) [Mongrel2](http://mongrel2.org/) [ØMQ](http://www.zeromq.org/) [Photon - Dépôt PEAR](http://dist.photon-project.com/) [Photon - All The Benchmarks Are Lies](http://www.photon-project.com/doc/performance) ---- # Principe de fonctionnement # Mongrel2 est un serveur web, écrit en C, qui prend en charge plusieurs protocoles côté client : HTTP + Long Polling, Flash sockets, WebSockets. La principale particularité est de ne pas avoir d'interface CGI, mais une interface basée sur la bibliothèque de communication ØMQ. Les requêtes HTTP des clients sont publiées sur cette interface, puis traitées de manière asynchrone par des processus applicatifs qui peuvent être écrits dans n'importe quel langage. Photon est un serveur d'application écrit en PHP qui traite les requêtes issues de Mongrel2. Photon traite une seule requête HTTP à la fois, comme les applications CGI. Toutefois, il est possible de lancer plusieurs instances de photon pour traiter plusieurs requêtes en même temps, le nombre d'instances de Photon peut être changé a chaud afin de répondre a une montée de trafic. De plus, les instances de Photon n'ont pas besoin d'être exécutées sur le même serveur que Mongrel2, grâce à l'utilisation de la librairie ØMQ, Mongrel2 devient un « load balancer ». Photon étant un micro Framework, la taille du code source reste modeste et la lecture de celui-ci reste aisée. # Fonctionnalités principales de Photon # * Les vues * Les vues sont des méthodes de classe, votre application doit déclarer une table de routage (RegExp -> Vue) * Précondition, pour la gestion des droits d'accès principalement * Envoi de la réponse via un itérateur, pour l'envoi de grosse réponse avec une utilisation minime de RAM. * Réponse pour les codes HTTP courants hors 200 : 302, 303, 304, 403, 404, 405, 500 * Post traitement, il est possible de sauvegarder du travail à faire après l'envoi de la réponse * Vue développeur pour l'analyse des erreurs 500 * Nom et position dans le code de l'exception * Pile d'appel * Contenu de la requête * Middleware * Gzip * Cross Site Request Forgery * Cookie & Session * Authentification * Cookie et session * Les cookies sont signés * Le gestionnaire de session n’impose pas le backend de stockage * Moteur de formulaire * Génération de code HTML à partir d'un objet _Form_ * Validation du formulaire via les contraintes décrites dans les champs d'entrée (Taille des chaînes, bornes des nombres, etc.) * Moteur de template simple, mais efficace et extensible par l'intermédiaire de : * filtre sur les variables (modifier) * générateur de code HTML (tag) * Support linguistique avec gettext : * Générateur de fichier POT * Fonction de traduction dans le code PHP et dans le moteur de template à partir des fichiers PO * Un gestionnaire d'événements * Les tâches (worker) * Permet le traitement différé des requêtes dans un autre processus. * Permet de mettre a disposition des ressources matérielles pour toutes les instances de Photon (Modem GSM-SMS, Périphérique USB, connexion modbus, etc.) * Les tâches peuvent envoyer la réponse à Mongrel2 sans re-passer par l'instance de Photon qui a émit la requête initiale. * E-Mail, wrapper vers PEAR_Mail * Auto-configuration depuis le fichier de configuration unifié de Photon * PHPUnit * Photon est presque intégralement (>95%) testé avec PHPUnit * Photon génère le bootstrap et le fichier de configuration PHPUnit pour votre projet afin de le tester facilement # Photon sur ARM # L'ensemble des logiciels nécessaires à Photon (Mongrel2, ØMQ, PHP) se cross-compile très facilement sous ARM. Il est donc possible de l'utiliser sur des plateformes telles que Overo de [Gumstix](https://www.gumstix.com/).