Php sous Windows - webcamps Paris
-
Upload
letesteur -
Category
Technology
-
view
2.522 -
download
6
Transcript of Php sous Windows - webcamps Paris
![Page 2: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/2.jpg)
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 ?
![Page 3: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/3.jpg)
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
![Page 4: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/4.jpg)
OSTC : un peu d'histoire …
Commencé en 2004
2 ordinateurs
une seule personne
![Page 5: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/5.jpg)
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
![Page 6: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/6.jpg)
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
![Page 7: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/7.jpg)
La plateforme Windows pour PHP
![Page 8: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/8.jpg)
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
![Page 9: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/9.jpg)
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é
![Page 10: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/10.jpg)
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
![Page 11: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/11.jpg)
FastCGI ?
![Page 12: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/12.jpg)
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
![Page 13: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/13.jpg)
Exemple : index.php (drupal 6)
![Page 14: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/14.jpg)
Quels gains de performance ?
![Page 15: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/15.jpg)
Drivers PHP pour Sql Server
![Page 16: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/16.jpg)
Nous apprenons …V1 :
Driver natif,Licence MS-PL
V2 :driver natif,driver PDO,Licence Apache 2
http://www.microsoft.com/opensource/directory.aspx
![Page 17: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/17.jpg)
![Page 18: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/18.jpg)
Packaging …
![Page 19: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/19.jpg)
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/
.
![Page 20: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/20.jpg)
Installation & administration PHP Manager
Web PI
![Page 21: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/21.jpg)
IIS ? http://php.iis.net
Fichiers .htaccessReverse ProxyURL RewritingForumsGalerie…
![Page 22: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/22.jpg)
Les outilsSortie cet été de WebMatrix En beta 3 pour le momenthttp://web.ms/webmatrix
![Page 23: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/23.jpg)
Cloud Computing, la suite
www.windowsazure4e.org
![Page 24: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/24.jpg)
Cloud Computing, la suite
![Page 25: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/25.jpg)
DrupalCon San Francisco
![Page 26: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/26.jpg)
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
![Page 27: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/27.jpg)
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
![Page 28: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/28.jpg)
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
![Page 29: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/29.jpg)
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 ?
![Page 30: Php sous Windows - webcamps Paris](https://reader035.fdocuments.fr/reader035/viewer/2022062514/558fd8de1a28ab63368b4654/html5/thumbnails/30.jpg)
Une page de publicité
http://www.maplateformeweb.com