33
PHP na Windows Artur Żarski [email protected] Developer Evangelist Microsoft Corporation

Artur Żarski, PHP na Windows

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Artur Żarski, PHP na Windows

PHP na Windows

Artur Ż[email protected] EvangelistMicrosoft Corporation

Page 2: Artur Żarski, PHP na Windows

Plan spotkania

IIS7 jako platforma PHP na Windows SQL Server Driver for PHP Expression Web 2 Inne możliwości współdziałania

Page 3: Artur Żarski, PHP na Windows

.NET Framework 3.5

.NET Framework 3.0 + SP 1

.NET Framework 2.0 + SP 1

LINQ ASP.NET 3.5CLR Add-inFramework

Additional Enhancement

s

Windows Presentation Foundation

Windows Communicati

on Foundation

Windows Workflow

Foundation

Windows CardSpace

Core

Zintegrowany Hypervisor

Podstawy

Serwer aplikacyjny Zarządzanie

.NET 3.0

IIS 7 Monitorowanie

WS-Management

Transakcje Odzyskiwanie

Sieć i komunikacjaPrzechowywanie

Role

serw

era

Page 4: Artur Żarski, PHP na Windows

VS.NET

Common Language Runtime

System

System.Data (ADO.NET) System.Xml

Design

ADO

Adapters

SQL

Globalization

Diagnostics

Configuration

Collections

Resources

Reflection

Net

IO

Threading

Text

ServiceProcess

Security RuntimeInteropServices

Remoting

Serialization

XPath

XSLT Serialization

System.Drawing

JIT

GC

MSIL

App Domain Loader

Common Type System Class Loader

System.Web (ASP.NET)

Configuration

SessionStateCaching

Security

Simple Web Services

DescriptionProtocols

UIHtmlControls

WebControls

Discovery

C#

VC/MC++ Imaging

Drawing2D

Text

Printing

JScript

VB

Platform Abstraction

Boot Loader SyncThreads NetworkingTimers Filesystem

System.WinForms

Design ComponentModel

Debugger

Designers

SDK Tools

CorDBG

ILAsm

ILDbDump

SN

ILDAsm

MetaInfo

PEVerify

Page 5: Artur Żarski, PHP na Windows

Microsoft i OpenSource

?

Page 6: Artur Żarski, PHP na Windows
Page 7: Artur Żarski, PHP na Windows

Przykłady projektów PHP

Azure API for PHP

Phalanger

PHP4VS

WindowsLive for PHP

PHPOpenXML API

PHPRPC for .NET

Excel document creation via OpenXML for PHP

PHP Linq

Page 8: Artur Żarski, PHP na Windows

IIS7 - platforma

Page 9: Artur Żarski, PHP na Windows

Zalety IIS 7.0Modularna

architektura aby zredukować

możliwość ataku

Konfiguracja systemu

oparta na XML

Możliwość zdalnego

zarządzania

Zaawansowana

diagnostyka

Integracja z WMS oraz

Media Pack

Możliwość rozszerzenia IIS7 przy użyciu kodu

zarządzanego

Page 10: Artur Żarski, PHP na Windows

Dlaczego warto przejść na IIS7? (1/2) Konfiguracja w pliku tekstowym

• Apache: httpd.conf ale wymaga restartu przez admina

• IIS7: bez restartu + command line Rozproszona konfiguracja

• Apache: .htaccess• Asp.net: web.config <system.webServer>,

konfiguracja per-URL (per żądanie) Rozszerzalność (C/C++/C#/VB.NET/ 30+

innych języków ...)• Nowy interfejs CHttpModule, łatwo zastąpić

swoim • SQL Logging (logowanie W3C w mniej niż 50 linii

kodu)

Page 11: Artur Żarski, PHP na Windows

Dlaczego warto przejść na IIS7? (2/2) Zaawansowana diagnostyka oraz

rozwiązywanie problemów• 'failed request tracing‘• request monitoring and runtime data

Administracja i API• AppCmd.exe• WMI provider• Microsoft.Web.Administration

Inne:• Application Request Routing• Web Deployment Tool• Bitrate Throttling / Smooth Streaming• …

Page 12: Artur Żarski, PHP na Windows

Moduły dostarczają usługi dla wszystkich żądań• moduł Basic Authentication• moduł Compression

Handlery dostarczają usługi dla specyficznych rozszerzeń• ISAPI handler (.dll)• Static handler (.htm, .jpg, .gif, etc)

IIS 7 pozwala na zarządzanie natywnymi i „zarządzanymi” modułami oraz handlerami.

IIS7 .NET Extensibility – Moduł vs. Handler

public class BasicAuthenticationModule : System.Web.IHttpModule {

void Init(HttpApplication context) { }

void Dispose() { }

}

Page 13: Artur Żarski, PHP na Windows

Set oService = GetObject("winmgmts:root\WebAdministration")

' Tworzymy binding dla witrynySet oBinding = oService.Get("BindingElement").SpawnInstance_oBinding.BindingInformation = "*:80:www.site.com"oBinding.Protocol = "http"

‘ Tworzymy witrynęoService.Get("Site").Create _ "NewSite", array(oBinding), "C:\inetpub\wwwroot"

' Tworzymy aplikacjęoService.Get("Application").Create _ "/foo", "NewSite", "C:\inetpub\wwwroot\foo"

Skrypty: nowy WMI Provider

Page 14: Artur Żarski, PHP na Windows

C:\> appcmd list sitesSITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)SITE "Site1" (id:2,bindings:http/*:81:,state:Started)SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped)

C:\> appcmd list requestsREQUEST "fb0000008000000e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost)

C:\> appcmd list requests /apppool.name:DefaultAppPool

C:\> appcmd list requests /wp.name:3567

C:\> appcmd list requests /site.id:1

Appcmd – listowanie i filtrowanie

Potężne narzędzie do zarządzania IIS 7 z linii komend

Page 15: Artur Żarski, PHP na Windows

ServerManager iisManager = new ServerManager();

foreach(WorkerProcess w3wp in iisManager.WorkerProcesses) {    Console.WriteLine("W3WP ({0})", w3wp.ProcessId);                foreach (Request request in w3wp.GetRequests(0)) {        Console.WriteLine("{0} - {1},{2},{3}",                    request.Url,                    request.ClientIPAddr,                    request.TimeElapsed,                    request.TimeInState);    }}

Programowanie: Microsoft.Web.AdministrationNowe APIs pozwala programistom na pisanie własnych narzędzi do wdrażania, zarządzania ASP.NET oraz IIS

Page 16: Artur Żarski, PHP na Windows

PHP na Windows

Page 17: Artur Żarski, PHP na Windows

Najważniejsze elementy

ADOdbPierwszy projekt Open Source, w którym MS brał udział

SQL Server PHP DriverSQL Server Driver for PHP został stworzony aby umożliwić współpracę PHP z SQL Server

IIS7+ FastCGIPodstawa PHP na Windows

Expression Web 2.0Wsparcie narzędzi MS do pracy z PHP

Page 18: Artur Żarski, PHP na Windows

IIS FastCGI Solidna platforma dla aplikacji PHP

• Otwarty standard• Wspierane przez środowisko PHP oraz wiele

innych frameworków open source (RoR, Perl, Python, …)

• Ulepszenie CGI• Web server tworzy proces FastCGI dla

pierwszego żądania• Web server wykorzystuje istniejące procesy

FastCGI dla następnych żądań• Konfigurowalne zasoby

vs. ISAPI:• Dostarcza wymaganą stabilność dla aplikacji PHP typu non-

thread-safe

vs. CGI:• Drastyczny wzrost wydajności

Page 19: Artur Żarski, PHP na Windows

IIS FastCGI – Zasada działania

FastCGI process pool for PHP4

php.exe

Read Configuration

Authenticate

Authorize

Map Request

Handle Request

Send Response

Log Request

FastCGI handler

ASP.NET

Static

Request queue

FastCGI process pool for PHP5

php-cgi.exe

FastCGI over named pipes lub TCP

IIS Worker Process

Page 20: Artur Żarski, PHP na Windows

Uruchomienie aplikacji PHP na IIS 7.0

Łatwy setup:• Instalacja PHP z FastCGI• Wdrożenie aplikacji

Kompatybilność:• Top 10 aplikacji PHP testowane i

udokumentowane na www.iis.net/php• Łatwa migracja ze wsparciem Url Rewrite

Page 21: Artur Żarski, PHP na Windows

SQL Server PHP Driver

Zalety: Pozwala na pewną i skalowaną integrację z SQL

Server Tworzenie aplikacji na silnym i bezpiecznym silniku

BD BI oraz SQL Reporting Services

Konfiguracja: Php.ini -> extension=php_sqlsrv.dll

Połączenie:

$serverName = "(local)"; $connectionOptions =

array("Database"=>"AdventureWorks");

Page 22: Artur Żarski, PHP na Windows

Microsoft® Expression® Web 2

• PHP 5.2.5, Fast CGI• Intellisense, code-coloring oraz

snippety• Podgląd „PHP include” w

trybie projektowanie• Podgląd stron PHP na różnych

zainstalowanych przeglądarkach przy pomocy wbudowanego Webservera

Page 23: Artur Żarski, PHP na Windows

PHP na Windows – dalsze możliwości

Page 24: Artur Żarski, PHP na Windows

PHP i Silverlight Działa na IIS i Apache Wymaga dodania dwóch MIME types dla

Silverlight• .xaml – application/xaml+xml• .xab – application/x-silverlight-app

Brak ustawień = błąd 404.3

Page 25: Artur Żarski, PHP na Windows

PHP i ASP.NET Membership + AJAX

ASP.NET• Kompletne zarządzane API

PHP on Windows• Microsoft SQL Server Driver for PHP• Web Services• .NET / COM

PHP On Linux• FreeTDS• Sockets• Web Services

Page 26: Artur Żarski, PHP na Windows

PHP i obiekty COM Czym jest COM (Component Object Model)

? PHP tak naprawdę nie używa COM. COM jest dowolnym językiem Windows

• VB• C++• Delphi• Python• Perl• Cobol• Fortran

Page 27: Artur Żarski, PHP na Windows

Tworzenie obiektów COM

<?php $myCOMObject =new

COM("COMObject.COMClass"); $myCOMObject->someMethod(“Some

Argument”);?>

Page 28: Artur Żarski, PHP na Windows

Inne możliwości

Microsoft Office Web Services

• NuSOAP• PHP 5 – Native SOAP Extension• ezSOAP• PEAR::SOAP

Microsoft .NET Microsoft Services (np. Live, Azure) Phalanger

Page 29: Artur Żarski, PHP na Windows

PHP – „Wish List”

Natywne API dla Active Directory AzMan API dla PHP PHP Bridge dla ADAM ASP.NET 2.0 Authentication Provider dla PHP A CDO / Exchange Bridge dla PHP PHP-Nuke, Mambo, etc. etc.

• Na MS SQL Server• Opcjonalnie dla Phalanger• Opcjonalnie dla AD

Page 30: Artur Żarski, PHP na Windows

.NET Framework 3.5

.NET Framework 3.0 + SP 1

.NET Framework 2.0 + SP 1

LINQ ASP.NET 3.5CLR Add-inFramework

Additional Enhancement

s

Windows Presentation Foundation

Windows Communicati

on Foundation

Windows Workflow

Foundation

Windows CardSpace

Core

Zintegrowany Hypervisor

Podstawy

Serwer aplikacyjny Zarządzanie

.NET 3.0

IIS 7 Monitorowanie

WS-Management

Transakcje Odzyskiwanie

Sieć i komunikacjaPrzechowywanie

Role

serw

era

Page 31: Artur Żarski, PHP na Windows

VS.NET

Common Language Runtime

System

System.Data (ADO.NET) System.Xml

Design

ADO

Adapters

SQL

Globalization

Diagnostics

Configuration

Collections

Resources

Reflection

Net

IO

Threading

Text

ServiceProcess

Security RuntimeInteropServices

Remoting

Serialization

XPath

XSLT Serialization

System.Drawing

JIT

GC

MSIL

App Domain Loader

Common Type System Class Loader

System.Web (ASP.NET)

Configuration

SessionStateCaching

Security

Simple Web Services

DescriptionProtocols

UIHtmlControls

WebControls

Discovery

C#

VC/MC++ Imaging

Drawing2D

Text

Printing

JScript

VB

Platform Abstraction

Boot Loader SyncThreads NetworkingTimers Filesystem

System.WinForms

Design ComponentModel

Debugger

Designers

SDK Tools

CorDBG

ILAsm

ILDbDump

SN

ILDAsm

MetaInfo

PEVerify

Page 32: Artur Żarski, PHP na Windows

Podsumowanie

Page 33: Artur Żarski, PHP na Windows

© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.