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.
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.
Aller plus loin
- Photon (565 clics)
- Mongrel2 (109 clics)
- ØMQ (77 clics)
- Photon - Dépôt PEAR (22 clics)
- Photon - All The Benchmarks Are Lies (70 clics)
# zerogw
Posté par fredix . Évalué à 5.
Perso j'utilise zerogw qui me parait plus simple à utiliser que mongrel2, il suffit de configurer un simple fichier zerogw.yaml pour configurer ses routes HTTP -> zeromq. il peut aussi forwarder des fichiers posté en HTTP vers mon API zeromq.
[^] # Re: zerogw
Posté par wysman . Évalué à 2.
Mongrel2 a aussi a simple fichier de configuration pour la gestion des routes. Il y a t-il d'autre avantage a utilisé zerogw ?
https://github.com/zedshaw/mongrel2/blob/master/examples/configs/sample.conf
[^] # Re: zerogw
Posté par fredix . Évalué à 2.
Le peu que j'ai regardé de mongrel2 j'ai juste rien compris, ca vient peut être de moi mais zerogw me parait beaucoup plus simple.
# Le nom est probablement mal choisi ...
Posté par totof2000 . Évalué à 2. Dernière modification le 26 avril 2013 à 14:47.
Il est déjà utilisé et c'est ce qui m'a traversé l'esprit quand j'ai lu le titre de la dépèche
Il faudrait penser à le changer pour éviter les problèmes …
[^] # Re: Le nom est probablement mal choisi ...
Posté par CrEv (site web personnel) . Évalué à 2.
Quoi ? le mot photon est déjà utilisé ? Naaaan !
;-)
[^] # Re: Le nom est probablement mal choisi ...
Posté par totof2000 . Évalué à 2.
Là on va plus loin que la simple utilisation d'un nom : il y a un autre produit qui porte ce nom dans un domaine assez proche depuis déjà assez longtemps , et ce serait se chercher des ennuis inutiles que de s'obstiner dans cette voie. En tout cas chacun fait ce qu'il veut mais je n'irai pas pleurer si les devs de Photon (celui dont parle la news) se prennent un procès et le perdent.
[^] # Re: Le nom est probablement mal choisi ...
Posté par CrEv (site web personnel) . Évalué à 3.
Se prendre un procès pour quelle raison ? Parce que les deux ont utilisé un nom commun ?
Le nom est-il déposé ? Il y a des (r) qui trainent quelque part (sachant que (tm) n'a quasiment aucune valeur) ?
Et bon, c'est pas pareil non plus. D'un côté un framework web, de l'autre une GUI.
Au fait, quelqu'un utilise du qnx / photon (pour de vrai et de nos jours) ?
[^] # Re: Le nom est probablement mal choisi ...
Posté par stopspam . Évalué à 4.
Encore pire, merci la méthode globale : j'avais lu en premier "Phonon" (Qt) et je ne voyais pas le rapport avec PHP…
# Dommage !
Posté par Thierry Thomas (site web personnel, Mastodon) . Évalué à 4.
C'est tout de même dommage que le code 200 ne soit pas pris en compte…
[^] # Re: Dommage !
Posté par Julien Fontanet (site web personnel) . Évalué à 1.
Rassure-moi, c'est une blague hein ?
[^] # Re: Dommage !
Posté par CrEv (site web personnel) . Évalué à 3.
Je pense surtout que la phrase initiale peut amener à penser que le code 200 n'est pas pris en compte…
[^] # Re: Dommage !
Posté par Julien Fontanet (site web personnel) . Évalué à 1.
Oui mais c'est quand même le code normal de l'HTTP, c'est évident que c'est supporté :)
# en vrai, pour faire quoi ?
Posté par maboiteaspam . Évalué à 1.
Par curiosité dans quel cadre vous utilisez du gsm avec un mvc php ?
Sinon,
Il y à 3 jours je lisais un article qui prônait la mort de php, notamment parce qu'il leak en tout sens.
Vous avez pris l'exact contre-pied de cette assertion.
Alors ça leak ou pas ?
[^] # Re: en vrai, pour faire quoi ?
Posté par maboiteaspam . Évalué à 2.
En tout cas, ça ce lit comme du petit lait,
http://projects.ceondo.com/p/photon/source/tree/develop/src/photon/server.php
[^] # Re: en vrai, pour faire quoi ?
Posté par Laurent J (site web personnel, Mastodon) . Évalué à 2.
PHP ne leak plus depuis bien longtemps.
Dans de vieilles versions (4.x, et probablement 5.0, 5.1), PHP avait des problèmes de fuites mémoires. Mais ça a été corrigé depuis longtemps à priori.
Maintenant, si un script PHP leak, cela peut aussi être de la faute du script en lui même qui créé des objets ayant des dépendances circulaires par exemple, et qui ne sont pas déréférencé correctement par le développeur.
Il y a même depuis la version 5.3 des fonctions pour forcer le garbage collector.
Quant à la possible mort de PHP, ça me fait doucement rigoler…
[^] # Re: en vrai, pour faire quoi ?
Posté par wysman . Évalué à 2.
Je confirme, j'ai des uptime de plusieurs mois sur les script PHP-CLI sans fuite mémoire.
[^] # Re: en vrai, pour faire quoi ?
Posté par wysman . Évalué à 1.
Avec les workers tu peut:
- Lancer un calcul en Matlab, R, ou tout langage qui te permet de faire des calculs/simulations.
- Mettre a disposition de toutes tes instances de photon, un ressource partagée (par exemple un labjack accepte uniquement 1 seul connection TCP à la fois)
- Garder des connexion ouverte, genre Apache MPM worker
- Bind une IP/PORT pour un groupe de serveur (Gateway pour des réseaux de capteurs), la on s'écarte un peu des utilisation classique MVC.
Pour le GSM, par exemple l'envoie de SMS est très courante dans le monde de l’électronique embarquée. Les modems les moins chères ont une seule liaison série, il font donc la partagée.
[^] # Re: en vrai, pour faire quoi ?
Posté par maboiteaspam . Évalué à 0.
En tout cas je compte bien lui donner un banc d'essai à ce serveur. J'espère bientôt ! Si c'est concluant je repasserais très probablement.
# Mongrel2
Posté par john Smith (site web personnel) . Évalué à 0.
Merci pour la découverte de Mongrel2
Cependant je vois qu'il y a pas d'activités récentes sur le dépot de mongrel2, est ce que le projet est toujours maintenu ?
[^] # Re: Mongrel2
Posté par wysman . Évalué à 0.
Oui ;)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.