Php sous Windows - webcamps Paris

Preview:

Citation preview

PHP et Microsoft, quoi de neuf ?

Pierre Couzy – Microsoft Francepierre.couzy@microsoft.comhttp://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

Recommended