1 / 17

PHP na IIS a dal ší postřehy

PHP na IIS a dal ší postřehy. Michal Till. P řednášející. Konzultant a vývojář – webové technologie Oblíbené: Zend Framwork Client - side RIA : Ext , YUI Magazín Connect – internet, vývoj softwaru. Agenda. PHP na IIS pomocí nového FastCGI handleru

benoit
Download Presentation

PHP na IIS a dal ší postřehy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP na IIS a další postřehy Michal Till

  2. Přednášející • Konzultant a vývojář – webové technologieOblíbené: • ZendFramwork • Client-side RIA : Ext, YUI • Magazín Connect – internet, vývoj softwaru

  3. Agenda • PHP na IIS pomocí nového FastCGIhandleru • Threadsafety – „tím to všechno začalo“ • Konfigurace • Integrace: „nakopíruji to a nic“ • WordPress a spol. – častý problém s URL rewritingem • Nějaké další postřehy

  4. Agenda • PHP na IIS pomocí nového FastCGIhandleru • Threadsafety – „tím to všechno začalo“ • Konfigurace • Integrace: „nakopíruji to a nic“ • WordPress a spol. – častý problém s URL rewritingem • Nějaké další postřehy

  5. Thread safe vs. Non thread safe PHP • Windows Y vlákna Linux Yprocesy • PHP @ IIS jako CGI: navrženo na procesy, běží na vláknech => pomalé • PHP @ IIS jako ISAPI: rychlé, ale pro PHP nestandardní, rozdíly ignorovány programátory, docházelo i k pádu ISAPI modulu (hlavně v minulosti) • …zbylo pomalé CGI

  6. Thread safe vs. Non thread safe PHP(2) • Co s tím – je třeba se zbavit režie CGI (a zachovat kompatibilitu) • Recyklace toho již bylo vykonáno a to pomocí • Op-codecache (akcelerátory) • Právě FastCGI • Ale ty thready: problém synchronizace (threadsafety) • Prostě se na to vykašleme (non thread safe)

  7. Thread safe vs. Non thread safe PHP(3) • Jednotlivá vlákna non thread safe kódu se nesynchronizují, tj. nečekají na sebe • 30%-40%úspory v rychlosti • POZOR: TS a NTS kód nejde kombinovat • … mnoho rozšíření do PHP je kompilováno jako TS • Pořád může být rychlejší op-codecaching • Nově: zbrusu nové FastCGI prostředí ve Win/IIS

  8. PHP @ FastCGI @ IIS • Recap:CGI -> Module/ISAPI -> FastCGI • Skoro jako CGI, až na to, že • Jeden proces zpracovává mnoho požadavků • Windows 2008 Server, Vista SP1 • Microsoft/Zend spolupráce • Masivní nárůst výkonu

  9. PHP@ FastCGI @ IIS (2) • Standardníinstalce (IIS 7.0) • IIS -> HandlerMappings • *.php, FastCgiModule, c:\php\php-cgi.exe • potvrditvytvořeníFastCGI prostředí („FastCGIapplication“) pro php-cgi.exe Pozn: nyní máme dvojitou recyklaci FCGI prostředí. PHP standardně po 500 dotazech, IIS po 200 … PHP se k tomu nikdy nedostane, což chceme… lze nastavit v IIS/php.ini

  10. Agenda • PHP na IIS pomocí nového FastCGIhandleru • Threadsafety – „tím to všechno začalo“ • Konfigurace • Integrace: „nakopíruji to a nic“ • WordPress a spol. – častý problém s URL rewritingem • Nějaké další postřehy

  11. WordPress@ IIS • Typický problém: PHP má mnoho konstant ohledně názvů souborů, cest a zpracovávaných URL • …spousta věcí je jinak • Příklad: zdá se, že problém byl v konstantě REQUEST_URI • zatímcoApache přidal querystring, IIS nikoliv • zatímco Apache předával hodnotu před přepsáním na „hezká url“, IIS po … atd. … V konstantách celkově zmatek, nefungoval např. Drupal , ale už je to opraveno.

  12. Další problémny s URL (nejen WordPress) • REQUEST_URI, PATH_INFO,PATH_TRANSLATED, SCRIPT_FILENAME, __FILE__ atd… kdo se v tom má vyznat… • Interpretace „/index.php/id/40“ • Standardně: file not found-> rewrite pravidlo • IISpři standardním php.ini: “No input filespecified.” • cgi.fix_pathinfo = 1 • cgi.force_redirect = 0 (?) • Quick-fix řešení na mnoho výše uvedeného: auto_prepend_file = C:\PHP\fix_uris.php

  13. Další problémy s URL (nejenWordPress) (2) • Na IIS je vícerorewriteenginů na tvorbu „hezkých url“ • IIS Mod-Rewrite má HTTP_X_ORIGINAL_URL • IIS Isapi_Rewrite má HTTP_X_REWRITE_URL • Pozn.: Jak vypadá kompletní diagram ukazující, co je třeba udělat pro sjednocení proměnných? ...odpověď bude v nějakém opensource CMS, kde to mají již „vychytané“ … třída CURI z Joomly

  14. IIS Auth for Wordpressplugin • Autentizace: Windows, Basic (http), Forms (HTML) • Windows Auth: je třeba vytvořit účet admin, kterým bude Wordpress spravovat účty (admin= administrátorský účet ve WP) • Do skupiny IIS_IUSRS, ne Administrators • Změna uživatele pod kterým běží PHP – direktivy impersonatev php.ini • http://mvolo.com/blogs/serverside/attachment/4835.ashx

  15. Memcache na IIS • memcached= “paměťový server“ • Jednoduché API v PHP, čte a zapisuje objekty (proměnné). Dá se použít i jako storage na sessions. • Linux: memcached daemon • Windows: je třeba stáhnout separátní službu • „Když to nefunguje, vypnu firewall a je to“ • Obdobnou funkci poskytují op-codecache

  16. Výsledek? • Interoperabilita je technicky bezproblémová • Zásadní zlepšení s novým FastCGIhandlerem • Spolupráce Microsoftu se Zendem • … to ovšem platí pokud má firma/hosting poslední verzi, jinak… • … z definice se stále jedná o minoritní kombinaci

  17. Jsme u konce • Děkuji za pozornost • michal.till@gmail.com • 604 144 144

More Related