Php sous Windows - webcamps Paris

2,869 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,869
On SlideShare
0
From Embeds
0
Number of Embeds
771
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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

    ×