Zend Server (PHP) na Windows s SQL Server 1.1 driverem, kompilovaný pomocí VC8 (Visual Studio 2005)

MyEgo.cz

home foto blogy mywindows.cz kontakt

Zend Server (PHP) na Windows s SQL Server 1.1 driverem, kompilovaný pomocí VC8 (Visual Studio 2005)

PHP 17.09.09

Před nedávnem vydané PHP 5.3 je díky spolupráci Microsoftu a Zendu výrazně lépe optimalizované pro Windows než předchozí verze, a netýká se to jen nativní podpory pro kompilaci ve Visual Studiu 2008 či 2005 oproti stařičkému Visual Studiu 6.0 z roku 1998, v němž jako jediném dosud šla oficiálně zkompilovat verze PHP 5.2 a starší.

PHP je na Windows s IIS 7.5 provozováno zásadně jako FastCGI proces, a to nejlépe v kombinaci s nějakým kompilátorem do bytecode a optimalizátorem jako je Zend Optimizer+.  Zend Optimizer+ je součástí speciální distribuce PHP od Zendu, která je zdarma dostupná pod názvem Zend Server CE. Na Windows rozhodně nepoužívejte běžné binárky z PHP.net.

Provozovat PHP na Windows většinou také znamená, že potřebujete nativně a co nejrychleji propojit PHP s SQL Server 2008 databázi. Microsoft nabízí na Codeplexu SQL Server Driver for PHP, což je rozšížení pro PHP, které je v současné verzi 1.1 tím nejlepším (z pohledu funkčnosti i rychlosti), jak propojit PHP s SQL Server 2005 / 2008 databázovým serverem.

Problém je pouze v tom, že zatímco Zend Server CE je kompilován ve Visual Studiu 2005 (VC8), tak SQL Server Driver for PHP se v binární podobě dodává jen jako VC6 anebo VC9. Naštěstí celý projekt na Codeplexu je dostupný včetně zdrojových kódů a není tedy problém si VC8 verzi zkompilovat.

Co budete potřebovat pro kompilaci?

Postup kompilace

Zdrojové kódy PHP si rozbalte třeba do adresáře C:\inetpub\php.dev\. Win32build a bindlib_w32 rozbalte do podadresářů. 

Rovněž do podadresáře ext\sqlsrv rozbalte zdrojové kódy SQL Server driveru.

Následně si spusťte Visual Studio 2005 Command Prompt, tedy příkazovou řádku VC8 kompilátoru (32bitová verze).

Zde vygenerujte configure pomocí příkazu buildconf.bat.

Následně se vytvoří nmake soubor. Protože nepotřebujete z PHP kompilovat vlastně nic jiného, než sqlsrv extension, je možné z configure skriptu vyřadit téměř vše, a rovněž vypnout thread-safe prostředí, které FastCGI proces v IIS zajišťuje sám, a není jím tedy nutné zpomalovat PHP.

cscript /nologo configure.js --enable-sqlsrv=shared 
 --with-php-build="C:\inetpub\php.dev\win32build\bin" 
 --with-extra-includes="C:\inetpub\php.dev\bindlib_w32" 
 --without-gd --without-iconv --disable-calendar 
 --disable-com-dotnet --without-mysqlnd --disable-ctype 
 --disable-filter --disable-tokenizer --disable-bcmath 
 --disable-odbc --disable-phar --disable-json --disable-zip 
 --disable-session --disable-ftp --without-ereg 
 --disable-zlib --without-libxml --without-dom --without-xml 
 --without-simplexml --disable-zts  

No a poté již můžete zkompilovat PHP a požadované extensions, na což slouží příkaz nmake.

Výsledek kompilace

Výsledkem kompilace bude, kromě PHP které nepotřebujete, také soubor Release\php_sqlsrv.dll, což je vlastní SQL Server driver zkompilovaný v tomto případě pomocí Visual Studio 2005, a tedy kompatibilní se Zend Server CE distribucí PHP.

PHP 5.3 kompilované s VC8 je na Windows mnohem rychlejší než předchozí verze verze 5.2 na VC6, běží stabilně, a společně s IIS 7.5 a SQL Server 2008 se tak jedná o robustní a výkonnou platformu pro potřeby, kde přestává stačit obyčejný LAMP.

SQL Server Driver 1.1 kompilovaný s VC8SQL Server Driver 1.1 kompilovaný s VC8

Stažení

Pokud si celý proces nechcete vyzkoušet také, mám pro vás jednodušší řešení - v souboru php_sqlsrv.zip si můžete stáhnout PHP 5.3 nonTS VC8 verzi tohoto ovladače. Pro licenci ovladače se prosím podívejte na Codeplex.


Komentáře

  1. 1 Jaromír Paršo 18.09.09, 08:09:34
    FB

    Čo znamená "mnohem rychlejší"? Neboli by nejaké konkrétne čísla? Dik.