Microsoft, PHP and IIS7

Post on 09-May-2015

41,078 views 5 download

description

Presented to the Sydney PHP User Group, 4th September 2008

transcript

Nick HodgeMicrosoft AustraliaProfessional Geeknhodge@microsoft.com

Jorke OdolphiMicrosoft AustraliaWeb Infrastructure Evangelistjorkeo@microsoft.com

This is not your father’s Microsoft

IIS Request Processing

Server functionality is split into ~ 40 modules...Modules plug into a generic request pipeline…Modules extend server functionality through a public module API.

Send ResponseSend ResponseLogLog CompressCompress

NTLMNTLM BasicBasic

DeterminDetermine e

HandlerHandler

CGICGIStatic Static FileFile

ISAPIISAPI

AuthenticationAuthentication

AnonAnon

SendResponseSendResponse

AuthenticationAuthentication

Authorization

ResolveCache

ExecuteHandlerExecuteHandler

UpdateCache…

ASP.NET

PHP

Monolithic implementation Install all or all or nothingnothing…

Extend server functionality only through ISAPIISAPI…

IIS 6.0 ASP.NET Processing

Runtime limitations

Only sees ASP.NET requests

Feature duplication

Send ResponseSend ResponseLogLog CompressCompress

NTLMNTLM BasicBasic

DeterminDetermine e

HandlerHandler

CGICGIStatic Static FileFile

ISAPIISAPI

AuthenticationAuthenticationAnonAnon

AuthenticationFormForm

ssWindowWindow

ss

Map Handler

ASPXASPXTraceTrace

………

aspnet_isapi.dll

IIS6 Application Framework support

Common Gateway Interface (CGI) for CGI and PHP applications Benefits

Very simple to implement and use – single-threaded execution

Disadvantages Poor performance due to high process creation cost Creates and passes request data to a new CGI process Waits for CGI process to produce response Shuts down CGI process

IIS6 Application Framework support

Internet Server Application Programming Interface (ISAPI) Benefit of ISAPI

Can be extremely fast when written correctly

Disadvantage of ISAPI

Must be thread-safe (many PHP extensions are not!)

Requires development in C++

PHP Setup

Per-site PHP configurationConfiguring FastCGI process pool

<fastCgi> <application fullPath="C:\PHP\php-cgi.exe" arguments="-d my.website=website1"> <environmentVariables> <environmentVariable name="PHPRC" value="C:\WebSites\website1" /> </environmentVariables> </application></fastCgi>

Combination of fullPath and arguments uniquely identify FastCGI process pool definition

PHPRC environment variable contains path to the php.ini file

IIS Extensions

Mod_rewrite support for URL rewriting

SQLServer 2008

Express version with Management Studio Free (as in beer) download

MySQL .NET drivers (data import/export)

Open source: Microsoft SQLServer Driver for PHP

Resources

http://learn.iis.nethttp://learn.iis.net

http://port25.technet.comhttp://port25.technet.com

http://codeplex.com/http://codeplex.com/http://port25.technet.com/archive/2008/07/25/osp.aspxhttp://port25.technet.com/archive/2008/07/25/osp.aspx