php sous windows - webcamps paris

30
PHP et Microsoft, quoi de neuf ? Pierre Couzy – Microsoft France [email protected] http://blog.couzy.com/

Upload: letesteur

Post on 28-Jun-2015

2.524 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Php sous Windows - webcamps Paris

PHP et Microsoft, quoi de neuf ?

Pierre Couzy – Microsoft [email protected]://blog.couzy.com/

Page 2: Php sous Windows - webcamps Paris

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

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

OSTC : un peu d'histoire …

Commencé en 2004

2 ordinateurs

une seule personne

Page 5: Php sous Windows - webcamps Paris

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

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

La plateforme Windows pour PHP

Page 8: Php sous Windows - webcamps Paris

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

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

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

FastCGI ?

Page 12: Php sous Windows - webcamps Paris

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

Exemple : index.php (drupal 6)

Page 14: Php sous Windows - webcamps Paris

Quels gains de performance ?

Page 15: Php sous Windows - webcamps Paris

Drivers PHP pour Sql Server

Page 16: Php sous Windows - webcamps Paris

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
Page 18: Php sous Windows - webcamps Paris

Packaging …

Page 19: Php sous Windows - webcamps Paris

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

Installation & administration PHP Manager

Web PI

Page 21: Php sous Windows - webcamps Paris

IIS ? http://php.iis.net

Fichiers .htaccessReverse ProxyURL RewritingForumsGalerie…

Page 22: Php sous Windows - webcamps Paris

Les outilsSortie cet été de WebMatrix En beta 3 pour le momenthttp://web.ms/webmatrix

Page 23: Php sous Windows - webcamps Paris

Cloud Computing, la suite

www.windowsazure4e.org

Page 24: Php sous Windows - webcamps Paris

Cloud Computing, la suite

Page 25: Php sous Windows - webcamps Paris

DrupalCon San Francisco

Page 26: Php sous Windows - webcamps Paris

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

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

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

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

Une page de publicité

http://www.maplateformeweb.com