PHP et Microsoft,
quoi de neuf ?
Pierre Couzy – Microsoft France
pierre.couzy@microsoft.com
http://blog.couzy.com/
Existe depuis une décennie
Pratiqué – en développement – par la
majorité des développeurs PHP
Et pourtant, Microsoft a lon...
3 objectifs simples :
I. Impliquer (et s’impliquer dans) les
Communautés
II. Garantir le bon fonctionnement des projets
su...
OSTC : un peu d'histoire …
Commencé en 2004
2 ordinateurs
une seule personne
L'OSTC : aujourd'hui
Hébergé à Redmond
Composé d’experts en
logiciels libres et Linux
Tests d'interopérabilité des logicie...
Redmond Open Source Lab
Plus de 400 serveurs de
différents types (Gumstix,
Intel, AMD, Blades, clusters
HPC clusters et de...
La plateforme Windows pour PHP
Industrialiser une distro PHP
• Certains binaires avaient 12 ans d’âge..
Des librairies hétérogènes
• Certaines libraririe...
Passage à Visual C++ 9
•Visual C++ 6.0 a 10 ans et ne sait pas
produire de code adapté au matériel et
systèmes d’exploitat...
De CGI à FastCGICGI
Un process par
requête
Avantage
• Très stable
Inconvénient
• *Très* lent sous
Windows (coût
énorme de ...
FastCGI ?
Wincache
V1
Cache d’OpCodes
Cache de fichiers
Cache de résolution de noms de fichiers
30 juin 2010 : sortie de la V1.1
Cac...
Exemple : index.php (drupal 6)
Quels gains de performance ?
Drivers PHP pour Sql Server
Nous apprenons …
V1 :
Driver natif,
Licence MS-PL
V2 :
driver natif,
driver PDO,
Licence Apache 2
http://www.microsoft.com...
Packaging …
Installation de tout ça..
Une partie est dans PECL
http://pecl.php.net/package/WinCache/
Une partie est sur CodePlex
http:...
Installation & administration
PHP Manager
Web PI
IIS ? http://php.iis.net
Fichiers .htaccess
Reverse Proxy
URL Rewriting
Forums
Galerie
…
Les outils
Sortie cet été de WebMatrix
En beta 3 pour le moment
http://web.ms/webmatrix
Cloud Computing, la suite
www.windowsazure4e.org
Cloud Computing, la suite
DrupalCon San Francisco
PDO::__construct($dsn[, $username[, password[,
$driver_options()]]])
Everyone does it differently
Inconsistent behavior fr...
Range queries pour d’autres moteurs:
SELECT * FROM table ORDER BY date LIMIT 20,10
SQL Server a que TOP(n) et des fonction...
Sémantiques des requêtes MERGE
Dans Drupal, l’implémentation variait d’un
moteur de bases de données à un autre
Le travail...
Sql Server s’est plutôt
bien marié avec
Drupal :
MySQL: 850 loc
PostgreSQL: 1008 loc
SQLite: 1177 loc
SQL Server: 1724 loc...
Une page de publicité
http://www.maplateformeweb.com
Php sous Windows - webcamps Paris
Prochain SlideShare
Chargement dans…5
×

Php sous Windows - webcamps Paris

2 831 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 831
Sur SlideShare
0
Issues des intégrations
0
Intégrations
771
Actions
Partages
0
Téléchargements
14
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Projet CodePlex « Microsoft SQL Server Driver for PHP » : http://sqlsrvphp.codeplex.com/
  • 120 secs
  • Php sous Windows - webcamps Paris

    1. 1. PHP et Microsoft, quoi de neuf ? Pierre Couzy – Microsoft France pierre.couzy@microsoft.com http://blog.couzy.com/
    2. 2. Existe depuis une décennie Pratiqué – en développement – par la majorité des développeurs PHP Et pourtant, Microsoft a longtemps mené la vie dure à PHP PHP sur Windows ?
    3. 3. 3 objectifs simples : I. Impliquer (et s’impliquer dans) les Communautés II. Garantir le bon fonctionnement des projets sur les OS Windows III. Ouvrir nos produits et services à des environnements traditionnellement non Microsoft L'Open Source Technology Center
    4. 4. OSTC : un peu d'histoire … Commencé en 2004 2 ordinateurs une seule personne
    5. 5. L'OSTC : aujourd'hui Hébergé à Redmond Composé d’experts en logiciels libres et Linux Tests d'interopérabilité des logiciels libres avec des technologies Windows Tests de performances de Windows et de la stack des logiciels libres
    6. 6. Redmond Open Source Lab Plus de 400 serveurs de différents types (Gumstix, Intel, AMD, Blades, clusters HPC clusters et des machines IBM P6) La disponibilité de plus de 340 distributions Linux La plus haute densité de calcul de tous les laboratoires de Microsoft Redmond
    7. 7. La plateforme Windows pour PHP
    8. 8. Industrialiser une distro PHP • Certains binaires avaient 12 ans d’âge.. Des librairies hétérogènes • Certaines librariries n’existaient qu’en format binaire, d’origine ou de licence inconnue. Code source indisponible • Les librairies n’avaient pas suivi les pratiques de sécurité depuis 10 ans pour certaines Pas de mises à jour de sécurité • Désynchronisation de la version Windows (pas de mises à jour des fonctionnalités) Pas de parité fonctionnelle • Le processus de build est exhaustif et automatisé. Recompilation de chaque binaire • Gestion de sécurité et de fonctionnalités à parité stricte avec les autres plateformes, puisqu’on s’appuie sur une souche commune de source Gestion des dépendances • On peut désormais exploiter des outils modernes d’optimisation de façon transversale puisque tout le source est synchronisé. Retour au source
    9. 9. Passage à Visual C++ 9 •Visual C++ 6.0 a 10 ans et ne sait pas produire de code adapté au matériel et systèmes d’exploitation actuels. Builds VC 6 •PHP sur Windows devenait un projet obsolète, de moins en moins de gens utilisant VC6 Un Compilo obsolète •Limitation de VC6 Pas de 64 bit •Un assemblage disparate et peu robuste Sécurité ? • VC9 permet de compiler pour les OS et architectures actuelles Builds VC 9 • Optimisations classiques du compilateur mais aussi des techniques nouvelles (PGO) Un compilo à jour • Production parallèle de binaires 32 et 64 bits pour PHP – pas encore pour tous les modules (55%) Support 64 bit • Les runtimes sont à jour et unifiés, les outils d’audit sont utilisés. Sécurité
    10. 10. De CGI à FastCGICGI Un process par requête Avantage • Très stable Inconvénient • *Très* lent sous Windows (coût énorme de création d’un process) ISAPI Chargement de PHP dans un surrogate ou dans le process IIS Avantage • Très performant Inconvénients • Stabilité • Réentrance FastCGI Gestion d’un pool de process Avantages • Plus rapide que CGI • Plus stable qu’ISAPI • Permet de fonctionner sans réentrance
    11. 11. FastCGI ?
    12. 12. Wincache V1 Cache d’OpCodes Cache de fichiers Cache de résolution de noms de fichiers 30 juin 2010 : sortie de la V1.1 Cache d’objets (syntaxe identique à APC) Stockage de session (avec persistance disque) Support des notifications du filesystem (invalidation) Où ? http://www.iis.net/download/wincacheforphp Quelle licence ? BSD
    13. 13. Exemple : index.php (drupal 6)
    14. 14. Quels gains de performance ?
    15. 15. Drivers PHP pour Sql Server
    16. 16. Nous apprenons … V1 : Driver natif, Licence MS-PL V2 : driver natif, driver PDO, Licence Apache 2 http://www.microsoft.com/opensource/dire ctory.aspx
    17. 17. Packaging …
    18. 18. Installation de tout ça.. Une partie est dans PECL http://pecl.php.net/package/WinCache/ Une partie est sur CodePlex http://sqlsrvphp.codeplex.com Une partie est sur la page de Pierre Joye… APC, mongo, Oauth http://downloads.php.net/pierre/ .
    19. 19. Installation & administration PHP Manager Web PI
    20. 20. IIS ? http://php.iis.net Fichiers .htaccess Reverse Proxy URL Rewriting Forums Galerie …
    21. 21. Les outils Sortie cet été de WebMatrix En beta 3 pour le moment http://web.ms/webmatrix
    22. 22. Cloud Computing, la suite www.windowsazure4e.org
    23. 23. Cloud Computing, la suite
    24. 24. DrupalCon San Francisco
    25. 25. PDO::__construct($dsn[, $username[, password[, $driver_options()]]]) Everyone does it differently Inconsistent behavior from PDO for $driver_options Solution: custom attributes only in constructor PDO::lastInsertId([$name]) Failure behavior completely undefined Many other implementations don’t throw exception even when PDO::ATTR_ERRMODE is set to PDO::ERRMODE_EXCEPTION Solution: all errors suppressed SQLPHP: challenges: API definitions
    26. 26. Range queries pour d’autres moteurs: SELECT * FROM table ORDER BY date LIMIT 20,10 SQL Server a que TOP(n) et des fonctions de fenêtrage, donc la requête se transforme en : SELECT sub2.*, ROW_NUMBER() OVER(ORDER BY sub2._l2) AS _l FROM ( SELECT 1 AS _l2, sub1.* FROM ( SELECT TOP(30) * FROM table ORDER BY date ) AS sub1 ) as sub2 WHERE _l BETWEEN 20 AND 30 Aussi performant, mais pas intuitif  Un exemple intéressant
    27. 27. Sémantiques des requêtes MERGE Dans Drupal, l’implémentation variait d’un moteur de bases de données à un autre Le travail sur Sql Server a mis en évidence ce problème et apporté des questions intéressantes pour Drupal : “INSERT, if fails UPDATE”, ou “UPDATE if there is a row matching a set of conditions, INSERT otherwise”? Un autre exemple
    28. 28. Sql Server s’est plutôt bien marié avec Drupal : MySQL: 850 loc PostgreSQL: 1008 loc SQLite: 1177 loc SQL Server: 1724 loc Le travail s’est bien passé grâce aux suites de test de Drupal. 99% des tests passent depuis la version alpha Et au final ?
    29. 29. Une page de publicité http://www.maplateformeweb.com

    ×