Php sous Windows - webcamps Paris
-
Upload
letesteur -
Category
Technology
-
view
2.524 -
download
6
Transcript of Php sous Windows - webcamps Paris
PHP et Microsoft, quoi de neuf ?
Pierre Couzy – Microsoft [email protected]://blog.couzy.com/
Existe depuis une décenniePratiqué – en développement – par la majorité des développeurs PHPEt pourtant, Microsoft a longtemps mené la vie dure à PHP
PHP sur Windows ?
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
OSTC : un peu d'histoire …
Commencé en 2004
2 ordinateurs
une seule personne
L'OSTC : aujourd'hui
Hébergé à RedmondComposé d’experts en logiciels libres et LinuxTests d'interopérabilité des logiciels libres avec des technologies WindowsTests de performances de Windows et de la stack des logiciels libres
Redmond Open Source LabPlus 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 LinuxLa plus haute densité de calcul de tous les laboratoires de Microsoft Redmond
La plateforme Windows pour PHP
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
PHP 5.2 PHP 5.3• 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
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é ?
PHP 5.2 PHP 5.3• 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é
De CGI à FastCGICG
I 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)
ISAP
I Chargement de PHP dans un surrogate ou dans le process IIS
Avantage• Très performant
Inconvénients• Stabilité• Réentrance
Fast
CGI Gestion d’un pool
de process
Avantages• Plus rapide que CGI• Plus stable qu’ISAPI• Permet de
fonctionner sans réentrance
FastCGI ?
Wincache V1
Cache d’OpCodesCache de fichiersCache de résolution de noms de fichiers
30 juin 2010 : sortie de la V1.1Cache 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
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/opensource/directory.aspx
Packaging …
Installation de tout ça..Une partie est dans PECL
http://pecl.php.net/package/WinCache/Une partie est sur CodePlex
http://sqlsrvphp.codeplex.comUne partie est sur la page de Pierre Joye…
APC, mongo, Oauthhttp://downloads.php.net/pierre/
.
Installation & administration PHP Manager
Web PI
IIS ? http://php.iis.net
Fichiers .htaccessReverse ProxyURL RewritingForumsGalerie…
Les outilsSortie cet été de WebMatrix En beta 3 pour le momenthttp://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 differentlyInconsistent behavior from PDO for $driver_optionsSolution: custom attributes only in constructor
PDO::lastInsertId([$name])
Failure behavior completely undefinedMany 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
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 _lFROM ( SELECT 1 AS _l2, sub1.* FROM ( SELECT TOP(30) * FROM table ORDER BY date ) AS sub1) as sub2WHERE _l BETWEEN 20 AND 30
Aussi performant, mais pas intuitif
Un exemple intéressant
Sémantiques des requêtes MERGEDans Drupal, l’implémentation variait d’un moteur de bases de données à un autreLe 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
Sql Server s’est plutôt bien marié avec Drupal :
MySQL: 850 locPostgreSQL: 1008 locSQLite: 1177 locSQL 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 ?
Une page de publicité
http://www.maplateformeweb.com