←back to Blog

[TechDays 2007] PHP sur Windows / Projet Phalanger

La session « PHP sur Windows » était décomposée en 3 grandes parties :

  • PHP et IIS : FastCGI
  • PHP et Microsoft Ajax
  • PHP sur la plateforme .NET : Projet Phalanger

Réaction à propos de la session a proprement dit :

Lorsqu’on annonce « Session sur PHP et Windows », ça serait sympa de nous éviter le discours publicommerciale de Altas Microsoft Ajax Libary, et par la même occasion sacrifier le temps initialement consacré au projet Phalanger.

PHP et IIS : FastCGI

Rappel :

Actuellement, PHP pour les serveurs Windows peut fonctionner de 2 manières différentes, le mode ISAPI et le mode CGI. Microsoft et Zend ont récemment annoncé une collaboration technique, dont la presse informatique a fait écho, ayant pour objectif d’améliorer les performances de PHP sur les serveurs Windows.

Jusque la rien d’étonnant :)

Tout le monde connait les performances actuelles de PHP sur Windows… (très très mauvaise)

Le fruit de cette collaboration est la création d’un module FastCGI pour PHP/IIS. (FastCGI est une technologie permettant la communication entre un serveur HTTP et un logiciel indépendant.)

Quelle est la différence avec CGI ? FastCGI utilise une seule exécution pour traiter toutes les requêtes, tandis que CGI exécute un nouveau programme à chaque requête. (pour aller plus loin avec FastCGI, consulter l’article de mon ami wordpressienfr Xavier Borderie sur le JDN)

Je vous laisse imaginer le gain de performances. (en fait non, il y a un graphe qui suit…) (étant donné que les graphes du blog IIS ne sont pas dispo, j’ai pondu un graphe en 3 clics avec Office 2007, l’unité est en requêtes / secondes)

performancesphpwindowsiisfastcgi

Ce module est compatible avec IIS5.1 (Windows XP), IIS6 (Windows 2003 Serveur) et IIS7 qui sortira avec Windows Serveur : Codename « Longhorn ».

FastCGI apporte un gain de performance, mais pas seulement, il améliore également la stabilité, et la compatibilité avec les extensions PHP non « Thread Safe » (c’est à dire beaucoup…).

Ce module n’est pas encore finalisé, mais il est possible de le télécharger sur le site IIS.net pour des fins de test, il est actuellement en technical preview 2.

Plus d’informations sur IIS.net

PHP et Microsoft Ajax

Cette partie, été pour moi, un hors sujet total, vu qu’on a eu droit à une grosse présentation de Microsoft Ajax Libary, et 2-3 remarques liés à PHP.

Donc en bref.

  • Atlas / Microsoft Ajax Library (Atlas étant le nom de code de développement)
  • Framework JS proche du .NET
  • Compatible tout navigateur
  • Inclus des librairies de programmation riche.
  • Actuellement disponible en RTM
  • Les contrôles serveur sont non compatibles
  • On n’utilise pas SOAP mais de JSON (plus compact, moins verbeux)
  • Utilisation 10% du coté client.
  • Découper-en en 5 fichiers.
    • MicrosoftAjax.js : Framework + Noyau
    • PreviewScript.js => BCL, Contrôle, XML – SCRIPT
    • PreviewDragDrop.js (tout est dans le nom)
    • PreviewGlitz.js : Animation, Opacité, etc.
    • BCL
  • Altas, apporte la notion objet, namespace, classe, héritage, interface, type énuméré. Les fonctions gloables, create, find, get, addHandler, RemoveHandler, debug.tracr
  • Il existe un projet couplant PHP à Microsoft Ajax Library : https://www.codeplex.com/phpmsajax (intégration PHP / MS Ajax)
  • JSON intégré en natif dans PHP 5.2
  • Utilisation possible des extenders.
  • Notion de binding présent dans Microsoft Ajax Library . (concept permettant de lier un élément X à un autre élément, peu importe le type)

Projet : Phalanger

Cette partie, surement la plus attendue des 3, et illogiquement bâclé, faute de temps…, était la présentation du projet Phalanger.

Phalanger est à l’origine un projet étudiant, il est disponible sous licence MS-PL (BSD Like en fait)

Mais au fait ? C’est quoi Phalanger ?

Phalanger est un compilateur PHP pour la plate-forme Microsoft .NET.

Petit rappel, la plateforme Microsoft .NET fonctionne de la manière suivante, les programmeurs travaillent en C# ou VB.net (sans oublie J#), compile leur application, générant ainsi un code IL, et plus précisément MSIL (Microsoft Intermediate Language), code intermédiaire avant l’exécution par la machine.

Phalanger permet donc d’inclure PHP dans les langages de développement de la plateforme .NET.

  • La version 1 permettait juste l’exécution d’application PHP sous .NET.
  • La version 2 va plus loin, et promet une réelle interopérabilité avec la plateforme .NET, le support de l’ASP.NET, la réimplémentation des classes et modules PHP, la réalisation d’application winform.

La beta 3 de Phalanger 2, ajoute l’intégration à Visual Studio 2005.

Christophe Lauer, un des SPEAKERS de cette session, a réalisé une démonstration d’un outil PHP relativement connu, WordPress… eh oui ! (on est partout :D) et mis à part un temps de génération plus important au 1er affichage, le blog est bien fonctionnel.

J’avoue avoir du mal à comprendre, comment le programme compilé peut interagir avec MySQL, tout en restant dynamique, et compilé… enfin bref :)

Je vais approfondir le sujet ;)

5 réponses à “[TechDays 2007] PHP sur Windows / Projet Phalanger”

  1. Avatar de Christophe Lauer [MS]
    Christophe Lauer [MS]

    Hello Amaury,

    Je précise que suis Christophe Lauer, l’un des deux speakers de cette session… donc mon point de vue est forcément un peu partial ;)

    Je te trouve injuste avec la partie concernant MS Ajax Library. Pour quiconque se pose la question de trouver un framework Ajax pour utiliser avec PHP, MS Ajax Library est un choix qui a du sens, parce que :

    – MS Ajax Library n’est au final qu’une grosse bibliothèque Javascript sans aucune adhérence à une quelconque techno côté serveur,
    – MS Ajax Library est fournie sous la même licence BSD-like que celle que tu mentionnes pour Phalanger (aka Microsoft SS-PL),
    – Le projet PHPMsAjax permet d’utiliser des Services Web PHP depuis cette MS Ajax Library avec la même facilité que s’il s’agissait de Services Web en .NET

    Et puis au risque d’insister, la MS Ajax Library est fournie en Open Source et gratuite, donc il n’était pas question pour nous de faire un discours commercial ;)

    Concernant le fonctionnement dynamique de Phalanger en mode natif, il y a un excellent article sur CodeProject.com écrit par l’un des membres de l’équipe qui explique comment c’est rendu possible. Bonne lecture.
    https://www.codeproject.com/cpnet/phalanger-intro.asp

    Cheers,
    /CL

  2. Avatar de Pierre Lagarde [MS]
    Pierre Lagarde [MS]

    Bonjour Amaury,
    Je suis l’autre speaker sur cette session et je voudrais juste faire une remarque sur le fait qu’on a passé peu de temps sur Phalanger: c’était voulu dans notre découpage de session car au TechDays on s’adresse avant tout a des professionels et je ne pense pas que dans l’état actuel du projet il est raisonnable de partir dessus pour un projet industriel. En opposition à Microsoft Ajax Library qui quand a lui est RTM et supporté et peut donc être mis en production.
    Je comprend cependant ta frustration sur la partie Microsoft Ajax Mibrary mais potentiellement dans la salle des perssonnes ne l’avaient jamais vu.
    Pierre

  3. Avatar de Jonx
    Jonx

    Je suis d'accord avec Amaury. (je viens seulement de tomber sur ce post). Peut-etre qu'un nom de session différent aurait réglé le probleme parce que j'y suis allé uniquement pour la partie phalanger. Du coup, quelle ne fut pas ma deception… Ceci dit, c'etaot deja bien d'aborder le sujet.

    Au sujet de ta question Mysql. En fait, ils utilisent un driver custom home made pour faire le passage phalanger/mysql.

    C'est toujours un projet d'etudiant, mais en tous cas MS a engagé les principaux etudiants qui ont bossé dessus. Les chanceux :) Du coup, peut-etre que ca suivra la meme voie que python ou ruby… Un jour…

    John.

  4. Avatar de pankkake
    pankkake

    (voir Wikipedia, article Shared Source, que je ne peux pas lier car ton blog le refuse)

  5. Avatar de Christophe Lauer [MS
    Christophe Lauer [MS

    @pankkake : Merci d'apporter cette précision, même un an après la discussion, il est toujours temps pour rectifier une imprécision.

    Et peut être pourrais tu alors nous dire en quoi la différence entre les BSD et la Apache 2 sont différentes pour les utilisateurs ?

    Vous me pardonnerez de ne pas être un expert diplômé genre "Bac+12 des 42 ou plus licences Open Source et affiliées" ;)