SlideShare une entreprise Scribd logo
1  sur  23
{
Windows et PHP
Un couple qui évolue
Pierre Couzy – Microsoft France
pierre.couzy@microsoft.com
http://blog.couzy.com/
{ Mes promesses de l’an dernier
{Commençons par un peu de perf.
{ 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)
{ 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.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
Beta 3 : hier soir (tard)
http://web.ms/webmatrix
{ Cloud Computing, la suite
www.windowsazure4e.org
{ Cloud Computing, la suite
{ Collaboration avec les
communautés
{ 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

Consul, un vrai couteau suisse
Consul, un vrai couteau suisseConsul, un vrai couteau suisse
Consul, un vrai couteau suisseXavierPestel
 
RSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive StreamsRSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive StreamsVMware Tanzu
 
RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...
RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...
RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...XavierPestel
 
Installation et configuration d'apache tomcat
Installation et configuration d'apache tomcatInstallation et configuration d'apache tomcat
Installation et configuration d'apache tomcatManassé Achim kpaya
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Installation et configuration du servuer ftp et tftp
Installation et configuration du servuer ftp et tftpInstallation et configuration du servuer ftp et tftp
Installation et configuration du servuer ftp et tftpAmdy Moustapha
 
Annotation Java vs. Decorator Python
Annotation Java vs. Decorator PythonAnnotation Java vs. Decorator Python
Annotation Java vs. Decorator PythonDidier Plaindoux
 
Plpython et Triggers
Plpython et TriggersPlpython et Triggers
Plpython et TriggersAffinitic
 
SdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireAlexandru Radovici
 
Systemes d'explotation: Threads
Systemes d'explotation: ThreadsSystemes d'explotation: Threads
Systemes d'explotation: ThreadsAlexandru Radovici
 
Versionning sémantique et Composer
Versionning sémantique et ComposerVersionning sémantique et Composer
Versionning sémantique et ComposerVladyslav Riabchenko
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1easyopenerp
 

Tendances (20)

Consul, un vrai couteau suisse
Consul, un vrai couteau suisseConsul, un vrai couteau suisse
Consul, un vrai couteau suisse
 
RSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive StreamsRSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive Streams
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...
RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...
RASPBERRY PI - votre infrastructure : ansible, user, iptables, monitoring, re...
 
Installation et configuration d'apache tomcat
Installation et configuration d'apache tomcatInstallation et configuration d'apache tomcat
Installation et configuration d'apache tomcat
 
SdE 3 - System de fichiers
SdE 3 - System de fichiersSdE 3 - System de fichiers
SdE 3 - System de fichiers
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
201505 monitoring
201505 monitoring201505 monitoring
201505 monitoring
 
Installation et configuration du servuer ftp et tftp
Installation et configuration du servuer ftp et tftpInstallation et configuration du servuer ftp et tftp
Installation et configuration du servuer ftp et tftp
 
Install oracle
Install oracleInstall oracle
Install oracle
 
Annotation Java vs. Decorator Python
Annotation Java vs. Decorator PythonAnnotation Java vs. Decorator Python
Annotation Java vs. Decorator Python
 
Plpython et Triggers
Plpython et TriggersPlpython et Triggers
Plpython et Triggers
 
SdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoire
 
SdE2 4 - Processus
SdE2 4 - ProcessusSdE2 4 - Processus
SdE2 4 - Processus
 
Systemes d'explotation: Threads
Systemes d'explotation: ThreadsSystemes d'explotation: Threads
Systemes d'explotation: Threads
 
Versionning sémantique et Composer
Versionning sémantique et ComposerVersionning sémantique et Composer
Versionning sémantique et Composer
 
Vim presentation
Vim presentationVim presentation
Vim presentation
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
SdE 4: Processus
SdE 4: ProcessusSdE 4: Processus
SdE 4: Processus
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1
 

En vedette

référencement naturel site Internet (CCI Landes)
référencement naturel site Internet (CCI Landes)référencement naturel site Internet (CCI Landes)
référencement naturel site Internet (CCI Landes)Ludovic Renoult
 
5 notion de_gnie_lectrique
5 notion de_gnie_lectrique5 notion de_gnie_lectrique
5 notion de_gnie_lectriqueAyoub Bernabio
 
(Open)Solaris : Introduction aux zones et à ZFS
(Open)Solaris : Introduction aux zones et à ZFS(Open)Solaris : Introduction aux zones et à ZFS
(Open)Solaris : Introduction aux zones et à ZFSBruno Bonfils
 
Detente
DetenteDetente
Detentemoipc
 
Community management 2014_mediatrium
Community management 2014_mediatriumCommunity management 2014_mediatrium
Community management 2014_mediatriumMediatrium
 
Enseignement quizz conjugaison
Enseignement quizz conjugaisonEnseignement quizz conjugaison
Enseignement quizz conjugaisonMSblog
 
Portfolio agile : de la visibilité au pilotage
Portfolio agile : de la visibilité au pilotagePortfolio agile : de la visibilité au pilotage
Portfolio agile : de la visibilité au pilotageCaroline Damour-Nobi
 
Les médias sociaux : meilleures pratiques en contexte d'affaires #slw3r
Les médias sociaux : meilleures pratiques en contexte d'affaires #slw3rLes médias sociaux : meilleures pratiques en contexte d'affaires #slw3r
Les médias sociaux : meilleures pratiques en contexte d'affaires #slw3rFrédéric Therrien
 
M&CSAATCHI.GAD Snack Planning Vol.1
M&CSAATCHI.GAD Snack Planning Vol.1M&CSAATCHI.GAD Snack Planning Vol.1
M&CSAATCHI.GAD Snack Planning Vol.1Benoît Pellevoizin
 
Galopades du patrimoine 2015
Galopades du patrimoine 2015Galopades du patrimoine 2015
Galopades du patrimoine 2015Laurent Rebours
 
Comprendre la crise financière (2009)
Comprendre la crise financière (2009) Comprendre la crise financière (2009)
Comprendre la crise financière (2009) Philippe Watrelot
 
Les enjeux du numérique à l'Ecole (mars 2014)
Les enjeux du numérique à l'Ecole (mars 2014)Les enjeux du numérique à l'Ecole (mars 2014)
Les enjeux du numérique à l'Ecole (mars 2014)Elie ALLOUCHE
 
Presentation Belle De Mai
Presentation Belle De MaiPresentation Belle De Mai
Presentation Belle De MaiPierre Casanova
 
Casablanca 2010 : Le traitement ARV en tant que prévention
Casablanca 2010 : Le traitement ARV en tant que préventionCasablanca 2010 : Le traitement ARV en tant que prévention
Casablanca 2010 : Le traitement ARV en tant que préventionVih.org
 
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïde
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïdeExemple d'appareillage de la main atteinte de polyarthrite rhumatoïde
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïdewanttologin
 

En vedette (20)

référencement naturel site Internet (CCI Landes)
référencement naturel site Internet (CCI Landes)référencement naturel site Internet (CCI Landes)
référencement naturel site Internet (CCI Landes)
 
5 notion de_gnie_lectrique
5 notion de_gnie_lectrique5 notion de_gnie_lectrique
5 notion de_gnie_lectrique
 
(Open)Solaris : Introduction aux zones et à ZFS
(Open)Solaris : Introduction aux zones et à ZFS(Open)Solaris : Introduction aux zones et à ZFS
(Open)Solaris : Introduction aux zones et à ZFS
 
Detente
DetenteDetente
Detente
 
Community management 2014_mediatrium
Community management 2014_mediatriumCommunity management 2014_mediatrium
Community management 2014_mediatrium
 
Enseignement quizz conjugaison
Enseignement quizz conjugaisonEnseignement quizz conjugaison
Enseignement quizz conjugaison
 
Portfolio agile : de la visibilité au pilotage
Portfolio agile : de la visibilité au pilotagePortfolio agile : de la visibilité au pilotage
Portfolio agile : de la visibilité au pilotage
 
Les médias sociaux : meilleures pratiques en contexte d'affaires #slw3r
Les médias sociaux : meilleures pratiques en contexte d'affaires #slw3rLes médias sociaux : meilleures pratiques en contexte d'affaires #slw3r
Les médias sociaux : meilleures pratiques en contexte d'affaires #slw3r
 
L’e mailing2012
L’e mailing2012L’e mailing2012
L’e mailing2012
 
J2 me
J2 meJ2 me
J2 me
 
Ecrire Faire Lire
Ecrire Faire LireEcrire Faire Lire
Ecrire Faire Lire
 
M&CSAATCHI.GAD Snack Planning Vol.1
M&CSAATCHI.GAD Snack Planning Vol.1M&CSAATCHI.GAD Snack Planning Vol.1
M&CSAATCHI.GAD Snack Planning Vol.1
 
Galopades du patrimoine 2015
Galopades du patrimoine 2015Galopades du patrimoine 2015
Galopades du patrimoine 2015
 
Cicéron
CicéronCicéron
Cicéron
 
Comprendre la crise financière (2009)
Comprendre la crise financière (2009) Comprendre la crise financière (2009)
Comprendre la crise financière (2009)
 
Les enjeux du numérique à l'Ecole (mars 2014)
Les enjeux du numérique à l'Ecole (mars 2014)Les enjeux du numérique à l'Ecole (mars 2014)
Les enjeux du numérique à l'Ecole (mars 2014)
 
Presentation Belle De Mai
Presentation Belle De MaiPresentation Belle De Mai
Presentation Belle De Mai
 
Casablanca 2010 : Le traitement ARV en tant que prévention
Casablanca 2010 : Le traitement ARV en tant que préventionCasablanca 2010 : Le traitement ARV en tant que prévention
Casablanca 2010 : Le traitement ARV en tant que prévention
 
Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012
 
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïde
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïdeExemple d'appareillage de la main atteinte de polyarthrite rhumatoïde
Exemple d'appareillage de la main atteinte de polyarthrite rhumatoïde
 

Similaire à PHP Forum 2010 : Php et microsoft

I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBruno Bonnin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOSgcatt
 
Pluggable annotation processing api
Pluggable annotation processing apiPluggable annotation processing api
Pluggable annotation processing apiArnaud Tournier
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsPhilippeBrogi
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfRihabBENLAMINE
 
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
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Jérôme Tamborini
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
PowerShell - Retours d'expériences
PowerShell - Retours d'expériencesPowerShell - Retours d'expériences
PowerShell - Retours d'expériencesRan Mellul
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Jean-Michel Doudoux
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps ParisLeTesteur
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Firas Kouẞàa
 

Similaire à PHP Forum 2010 : Php et microsoft (20)

I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Pluggable annotation processing api
Pluggable annotation processing apiPluggable annotation processing api
Pluggable annotation processing api
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloads
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdf
 
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 ...
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Rapport tp1 j2ee
Rapport tp1 j2eeRapport tp1 j2ee
Rapport tp1 j2ee
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
PowerShell - Retours d'expériences
PowerShell - Retours d'expériencesPowerShell - Retours d'expériences
PowerShell - Retours d'expériences
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps Paris
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 

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 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
 
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
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 LyonLeTesteur
 
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
 
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 (13)

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 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
 
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
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 Lyon
 
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)
 
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 Forum 2010 : Php et microsoft

  • 1. { Windows et PHP Un couple qui évolue Pierre Couzy – Microsoft France pierre.couzy@microsoft.com http://blog.couzy.com/
  • 2. { Mes promesses de l’an dernier
  • 3. {Commençons par un peu de perf.
  • 5. { 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
  • 6. { Exemple : index.php (drupal 6)
  • 7. { Drivers PHP pour Sql Server
  • 8. { Nous apprenons … V1 : Driver natif, Licence MS-PL V2 : driver natif, driver PDO, Licence Apache 2 http://www.microsoft.com/opensource/directory.aspx
  • 9. {
  • 11. { 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/
  • 12. { Installation & administration PHP Manager Web PI
  • 13. { IIS ? http://php.iis.net Fichiers .htaccess Reverse Proxy URL Rewriting Forums Galerie …
  • 14. { Les outils Sortie cet été de WebMatrix Beta 3 : hier soir (tard) http://web.ms/webmatrix
  • 15. { Cloud Computing, la suite www.windowsazure4e.org
  • 16. { Cloud Computing, la suite
  • 17. { Collaboration avec les communautés
  • 18. { DrupalCon San Francisco
  • 19. { 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
  • 20. {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
  • 21. { 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
  • 22. {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 ?
  • 23. { Une page de publicité http://www.maplateformeweb.com

Notes de l'éditeur

  1. 120 secs