SlideShare une entreprise Scribd logo
1  sur  30
PHP et Microsoft,
quoi de neuf ?
Pierre Couzy – Microsoft France
pierre.couzy@microsoft.com
http://blog.couzy.com/
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 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é à 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
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
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
• 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é ?
• 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 à 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
FastCGI ?
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
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/dire
ctory.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.com
Une partie est sur la page de Pierre Joye…
APC, mongo, Oauth
http://downloads.php.net/pierre/
.
Installation & administration
PHP Manager
Web PI
IIS ? http://php.iis.net
Fichiers .htaccess
Reverse Proxy
URL Rewriting
Forums
Galerie
…
Les outils
Sortie cet été de WebMatrix
En beta 3 pour le moment
http://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 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
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
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
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 ?
Une page de publicité
http://www.maplateformeweb.com

Contenu connexe

Tendances

Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...
Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...
Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...Jérôme Leleu
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?Membré Guillaume
 
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuAhmed Archive
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Cédric Leblond
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Silicon Comté
 
Le développement web : tour d'horizon
Le développement web : tour d'horizonLe développement web : tour d'horizon
Le développement web : tour d'horizonMicrosoft
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousPublicis Sapient Engineering
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIRomain Cambien
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distancepprem
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?ALTER WAY
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiquesJohan Moreau
 
La plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nulsLa plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nulsMicrosoft
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, LinuxYasmine Amrani
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Laurent Guérin
 

Tendances (20)

Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...
Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...
Devoxx france 2014 - Jérôme LELEU - One java library to rule all security pro...
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
 
Le développement web : tour d'horizon
Le développement web : tour d'horizonLe développement web : tour d'horizon
Le développement web : tour d'horizon
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tous
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distance
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiques
 
La plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nulsLa plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nuls
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0
 

En vedette

Management de l'imprévu
Management de l'imprévuManagement de l'imprévu
Management de l'imprévuDenis Navizet
 
\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solar
\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solar\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solar
\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solartecnologiacuartoac
 
Informe de gestion definitivo 2016
Informe de gestion definitivo 2016Informe de gestion definitivo 2016
Informe de gestion definitivo 2016Ana Perez
 
No te olvides de...
No te olvides de...No te olvides de...
No te olvides de...JOSÉ TOMÁS
 
Apuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesisApuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesiscarlos achulli
 
Data-driven marketing
Data-driven marketing Data-driven marketing
Data-driven marketing Dialog Insight
 
Map7 nov2012-fr
Map7 nov2012-frMap7 nov2012-fr
Map7 nov2012-frroofishigh
 
Journee etude montpellier_bl
Journee etude montpellier_blJournee etude montpellier_bl
Journee etude montpellier_blAgrodoc Ouest
 
Opencloud, Jean-Pierre Laisne - CompatibleOne
Opencloud, Jean-Pierre Laisne - CompatibleOneOpencloud, Jean-Pierre Laisne - CompatibleOne
Opencloud, Jean-Pierre Laisne - CompatibleOneCompatibleOne
 
Module introduction innovation session1
Module introduction innovation session1Module introduction innovation session1
Module introduction innovation session1Sabri MOURAD
 
Contenus Web En Cure Idemm2010
Contenus Web En Cure Idemm2010Contenus Web En Cure Idemm2010
Contenus Web En Cure Idemm2010Wearethewords
 
Estudio técnico
Estudio técnicoEstudio técnico
Estudio técnicoRoss Chan
 

En vedette (20)

Garces Gpel
Garces GpelGarces Gpel
Garces Gpel
 
Management de l'imprévu
Management de l'imprévuManagement de l'imprévu
Management de l'imprévu
 
\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solar
\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solar\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solar
\\Profesor\4ºAc\2ª EvaluacióN\Power Point\Luismi Y Fran\El Sistema Solar
 
Mosemedrano Gpel Aula B
Mosemedrano Gpel Aula BMosemedrano Gpel Aula B
Mosemedrano Gpel Aula B
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Informe de gestion definitivo 2016
Informe de gestion definitivo 2016Informe de gestion definitivo 2016
Informe de gestion definitivo 2016
 
No te olvides de...
No te olvides de...No te olvides de...
No te olvides de...
 
Apuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesisApuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesis
 
Máster DSL. El salario. 13.10.2014.
Máster DSL. El salario. 13.10.2014.Máster DSL. El salario. 13.10.2014.
Máster DSL. El salario. 13.10.2014.
 
Data-driven marketing
Data-driven marketing Data-driven marketing
Data-driven marketing
 
Map7 nov2012-fr
Map7 nov2012-frMap7 nov2012-fr
Map7 nov2012-fr
 
Defendiendo vidas, fortaleciendo familias
Defendiendo vidas, fortaleciendo familiasDefendiendo vidas, fortaleciendo familias
Defendiendo vidas, fortaleciendo familias
 
Aceros (tp edi)
Aceros (tp edi)Aceros (tp edi)
Aceros (tp edi)
 
Journee etude montpellier_bl
Journee etude montpellier_blJournee etude montpellier_bl
Journee etude montpellier_bl
 
Taller de blocs cee gener 2013
Taller de blocs cee gener 2013Taller de blocs cee gener 2013
Taller de blocs cee gener 2013
 
Opencloud, Jean-Pierre Laisne - CompatibleOne
Opencloud, Jean-Pierre Laisne - CompatibleOneOpencloud, Jean-Pierre Laisne - CompatibleOne
Opencloud, Jean-Pierre Laisne - CompatibleOne
 
Module introduction innovation session1
Module introduction innovation session1Module introduction innovation session1
Module introduction innovation session1
 
Ava
AvaAva
Ava
 
Contenus Web En Cure Idemm2010
Contenus Web En Cure Idemm2010Contenus Web En Cure Idemm2010
Contenus Web En Cure Idemm2010
 
Estudio técnico
Estudio técnicoEstudio técnico
Estudio técnico
 

Similaire à Php sous Windows - webcamps Paris

Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 LyonLeTesteur
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...Kouotou Aboubakar Sidiki, Eng, PMP
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftLeTesteur
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreMicrosoft
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxThomasParaiso1
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsJohan Moreau
 
Ugif 09 2013 open source
Ugif 09 2013   open sourceUgif 09 2013   open source
Ugif 09 2013 open sourceUGIF
 
Programmation Web developpement dynamique
Programmation Web developpement dynamiqueProgrammation Web developpement dynamique
Programmation Web developpement dynamiqueYounesOuladSayad1
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
Ugif 09 2013 open source - session tech
Ugif 09 2013   open source - session techUgif 09 2013   open source - session tech
Ugif 09 2013 open source - session techUGIF
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Guillaume Sautereau
 

Similaire à Php sous Windows - webcamps Paris (20)

Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 Lyon
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoft
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptx
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
 
Ugif 09 2013 open source
Ugif 09 2013   open sourceUgif 09 2013   open source
Ugif 09 2013 open source
 
Paug aosp ice-creamsandwich_20120119
Paug aosp ice-creamsandwich_20120119Paug aosp ice-creamsandwich_20120119
Paug aosp ice-creamsandwich_20120119
 
Programmation Web developpement dynamique
Programmation Web developpement dynamiqueProgrammation Web developpement dynamique
Programmation Web developpement dynamique
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Ugif 09 2013 open source - session tech
Ugif 09 2013   open source - session techUgif 09 2013   open source - session tech
Ugif 09 2013 open source - session tech
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010
 

Plus de LeTesteur

EventMachine
EventMachineEventMachine
EventMachineLeTesteur
 
RxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScriptRxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScriptLeTesteur
 
Drupal en environnement microsoft
Drupal en environnement microsoftDrupal en environnement microsoft
Drupal en environnement microsoftLeTesteur
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenableLeTesteur
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open doorLeTesteur
 
Drupal in the cloud with Windows Azure
Drupal in the cloud with Windows AzureDrupal in the cloud with Windows Azure
Drupal in the cloud with Windows AzureLeTesteur
 
Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)LeTesteur
 
PHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoftPHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoftLeTesteur
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day parisLeTesteur
 
Reactive programming for javascript
Reactive programming for javascriptReactive programming for javascript
Reactive programming for javascriptLeTesteur
 
Comment approcherlecloud
Comment approcherlecloudComment approcherlecloud
Comment approcherlecloudLeTesteur
 
What linq is about
What linq is aboutWhat linq is about
What linq is aboutLeTesteur
 

Plus de LeTesteur (12)

EventMachine
EventMachineEventMachine
EventMachine
 
RxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScriptRxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScript
 
Drupal en environnement microsoft
Drupal en environnement microsoftDrupal en environnement microsoft
Drupal en environnement microsoft
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
 
Drupal in the cloud with Windows Azure
Drupal in the cloud with Windows AzureDrupal in the cloud with Windows Azure
Drupal in the cloud with Windows Azure
 
Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)
 
PHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoftPHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoft
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day paris
 
Reactive programming for javascript
Reactive programming for javascriptReactive programming for javascript
Reactive programming for javascript
 
Comment approcherlecloud
Comment approcherlecloudComment approcherlecloud
Comment approcherlecloud
 
What linq is about
What linq is aboutWhat linq is about
What linq is about
 

Php sous Windows - webcamps Paris

  • 1. PHP et Microsoft, quoi de neuf ? Pierre Couzy – Microsoft France pierre.couzy@microsoft.com http://blog.couzy.com/
  • 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 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. OSTC : un peu d'histoire … Commencé en 2004 2 ordinateurs une seule personne
  • 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. 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
  • 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. 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. 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
  • 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. Exemple : index.php (drupal 6)
  • 14. Quels gains de performance ?
  • 15. Drivers PHP pour Sql Server
  • 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.
  • 19. 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/ .
  • 21. IIS ? http://php.iis.net Fichiers .htaccess Reverse Proxy URL Rewriting Forums Galerie …
  • 22. Les outils Sortie cet été de WebMatrix En beta 3 pour le moment http://web.ms/webmatrix
  • 23. Cloud Computing, la suite www.windowsazure4e.org
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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 ?
  • 30. Une page de publicité http://www.maplateformeweb.com

Notes de l'éditeur

  1. Projet CodePlex « Microsoft SQL Server Driver for PHP » : http://sqlsrvphp.codeplex.com/
  2. 120 secs