Tutoriale PHP
  Comunitatea PHP Romania
?>

 
Tutoriale PHP
FastCGI si WinCache ca mecanisme de accelerare a performantei
  • Articole
  • IIS
  • FastCGI si WinCache ca mecanisme de accelerare a performantei
Google Buzz
FastCGI si WinCache ca mecanisme de accelerare a performantei
Vezi comentariiDiscuta acest articol (0 comentarii)
TiparesteTipareste
Adauga la favorite-Doar pentru membriiAdauga la favorite

Performanta PHP pe Windows a fost imbunatatita constant. In prezentarea lui Ilia Alshanetsky (Core PHP Developer) de la conferinta CooFoo 2010 (10-12 martie 2010) referitoare la PHP 5.3, acesta afirma ca performanta a fost imbunatatita pe Windows cu 40%. Prezentarea o gasiti la adresa: http://ilia.ws/files/Confoo2010_PHP53.pdf .

FastCGI reprezinta o alternativa la Common Gateway Interface (CGI), un protocol de interfatare intre aplicatii externe si serverele web. In cazul CGI, pentru fiecare cerere web sunt rulate executabile care sa proceseze cererea si sa genereze raspunsul dinamic. FastCGI ofera un mecanism prin care un singur proces este reutilizat pentru mai multe cereri.

Cerinte FastCGI

  • Windows Server 2008 R2, Windows Server 2008, Windows Vista sau Windows 7
  • IIS 7

Instalare FastCGI si PHP

1. Adaugati protocolul CGI din Control Panel > Programs and Features > Turn Windows features on or off. In acest mod activati atat CGI cat si FastCGI.

2. Descarcati ultima versiune de PHP de la adresa: http://www.php.net/downloads.php

3. Editati fisierul php.ini si modificati urmatoarele setari:

  • fastcgi.impersonate = 1
  • cgi.fix_pathinfo=1
  • cgi.force_redirect = 0.

4. Configurati IIS 7 sa rezolve cererile PHP

Pentru a configura IIS 7 sa permita aplicatii PHP este necesar sa realizam o mapare care sa spuna serverului IIS sa treaca cererile PHP prin protocolul FastCGI.

a) Deschideti IIS Manager si selectati Handler Mappings

b) Selectati Add Module Mapping si specificati urmatoarele setari:

  • Request path: *.php
  • Module: FastCGIModule
  • Executable (optional): C:\[Calea spre directorul unde e instalat PHP]\php-cgi.exe
  • Name: PHP_via_FastCGI

 

Puteti verifica daca FastCGI este instalat corect in lista de module din IIS Manager.


Mai multe detalii despre configurarea FastCGI puteti gasi pe site-ul php.net:

Windows Cache Extension

Windows Cache Extension (prescurtat WinCache) reprezinta un accelerator PHP care este folosit pentru a mari viteza de rulare a aplicatiilor pe platforma Windows si Windows Server. Windows Cache Extension salveaza versiunea compilata a scriptului rulat in memorie, facandu-l disponibil de fiecare data cand acelasi script este executat, marind astfel performanta.

Puteti descarca Windows Cache Extension de la urmatoarele adrese:

  • WinCache 1.1 Beta pentru PHP 5.2 - x86
  • WinCache 1.1 Beta pentru PHP 5.3 - x86

WinCache reprezinta o alternativa la acceleratoare PHP ca:

O comparatie a metodelor folosite de 3 dintre acceleratoare (pe langa WinCache) le gasiti mai jos:

WinCache
APC
XCache
eAccelerator
wincache_ucache_get
apc_fetch
xcache_get
eaccelerator_get
wincache_ucache_set
apc_store
xcache_set
eaccelerator_put
wincache_ucache_add
apc_add
-
-
wincache_ucache_exists
-
xcache_isset
-
wincache_ucache_delete
apc_delete
xcache_unset
eaccelerator_rm
wincache_ucache_clear
apc_clear_cache
xcache_clear_cache
eaccelerator_clear
wincache_ucache_inc
apc_inc
xcache_inc
-
wincache_ucache_dec
apc_dec
xcache_dec
-
wincache_ucache_cas
apc_cas
-
-
wincache_ucache_info
apc_sma_info
xcache_info
eaccelerat

Facilitati WinCache

  • suport pentru PHP 5.2 si PHP 5.3
  • cache-ul de fisiere configurabil
  • cache-ul opcode configurabil
  • cache pentru caile relative
  • functii pentru a obtine informatii despre starea cache-ului (wincache_fcache_fileinfo, wincache_fcache_meminfo)

Windows Cache Extension include 5 componente:

  • Cache Opcode PHP - Pe un server web, engine-ul PHP citeste, parseaza, compileaza si executa un script PHP de fiecare data cand acel script este cerut de catre clientul Web. Cache-ul PHP Opcode stocheaza scriptul compilat in memorie in asa fel incat poate fi reapelat foarte repede in momentul cand acel script este executat in mod repetat. O mare parte din timpul de procesare a unei cereri este detinut de generarea opcode-ului. Astfel ca prin intermediul acestei solutii se salveaza 50-70% din timpul de executie a cererii.
  • Cache fisier - Chiar daca cache-ul PHP Opcode este activat, PHP trebuie sa acceseze din nou scriptul de pe server. Windows Cache Extension include un cache pentru fisiere care permite stocarea continutului fisierelor PHP in memorie, ceea ce reduce in mod semnificativ operatiile realizate de engine-ul PHP. Astfel ca in momentul in care un fisier este accesat pentru prima data, continutul fisierului este stocat in cache. Cand fisierul este deschis din nou, un pointer la continutul fisierului din memorie este returnat. Testele efectuate pe aplicatii populare gen Wordpress sau Drupal au aratat ca operatiile cu fisierul sunt reduse in acest fel cu 80-90% pentru fiecare cerere noua.
  • Cache cai relative - Codurile PHP includ in mod frecvent cai relative. Fiecare din aceste cai relative trebuie transformate in cai absolute. Cand aplicatia PHP foloseste foarte multe fisier PHP si are de accesat multe cai relative apar probleme de performanta. Cache-ul pentru caile relative stocheaza maparea dintre caile relative si cele absolute.
  • Cache utilizator (din WinCache 1.1) - Codurile PHP pot folosi memoria pentru a salva obiecte si variabile din PHP care sunt stocate in cache-ul utilizator.
  • Manipularea sesiunilor (din WinCache 1.1)- Aceasta facilitate permite pastrarea datelor sesiunilor in memoria partajata care duce la evitarea stocarii datelor de sesiuni in sistemul de fisiere, imbunatatind in acest mod performanta. Se poate activa din php.ini setand
    • session.save_handler = wincache

Comparatii

1) Pe site-ul ibuildings.com gasim un benchmark legat de performanta Wincache. Mark Van der Velden compara performanta Wordpress si SilverStripe pe 2 platforme:

  • Microsoft Windows Platform Installer (WebPI) - cu si fara WinCache
  • Zend Server - cu Optimizer+ si fara Optimizer+

Testul

Wordpress
(cereri/sec)

Factor

SilverStripe
(cereri/sec)

Factor
WebPI 53.36 x1 54.06 x1
Zend Server 55.66 x1 57.66 x1
 
WebPI + WinCache 122.52 x2.3 108.69 x2.0
Zend Server + Zend Optimizer+ 119.02 x2.1 111.04 x1.9

Observam o imbunatatire folosind WinCache cu WebPI, in timp ce WebPI + WinCache are rezultate relativ la fel cu Zend Server + Zend Optimizer+.

2) De asemenea, Ruslan Yakushev (Project Manager in echipa Microsoft IIS) face cateva comparatii interesante in prezentarea lui, PHP Performance on Windows folosind Wordpress 2.9.2.

O prima comparatie realizata este intre CGI si FastCGI. Se observa o diferenta semnificativa de la 2 RPS (cereri pe secunda) la o medie de 17 RPS.

De asemenea, in urmatorul grafic, se poate observa numarul de procese CGI comparat cu numarul de procese FastCGI.

Ruslan adauga in ecuatie si prima versiune de WinCache 1.0, unde de asemenea se observa o imbunatatire de la 17 cereri pe secunda la 44 cereri pe secunda printr-o simpla modificare in php.ini:

extension = php_wincache.dll

 

WinCache 1.1 aduce imbunatatiri prin cache-ul utilizator ajungand la 62 cereri pe secunda.

Resurse

PHP.net - http://www.php.net/manual/en/book.wincache.php
http://www.ksingla.net/2010/03/comparing-wincache-user-cache-apis-with-other-caches/
PHP Performance on Windows - http://www.slideshare.net/ruslany/php-performance-on-windows
PHP5.3 == Awesome! - Ilia Alshanetsky - http://ilia.ws/files/Confoo2010_PHP53.pdf
http://www.iis.net/expand/FastCGI
http://www.iis.net/expand/wincacheforphp

Sus


Trimis de : N/AData intrarii : 30 Mai 2010Nivel : intermediar


[ Profil autor ]

[ Alte articole ale acestui autor ]
Conectarea la o baza de date din PHP
Interakt - O poveste de succes
IIS Manager
Database Manager
SEO Toolkit
Instalare PHP/IIS. Exemplu aplicat pe WP Installer si phpMyAdmin
Instalarea Joomla si configurarea URL Rewrite pe IIS 7
Introducere in SQL Server pentru dezvoltatorul PHP
Securitate IIS (interpretarea rapoartelor Secunia din introducere in IIS)
Benchmark. Performanta IIS vs. Apache

Gazduire

Tutoriale

Discuta in forum

Parteneri

Copyright © 2001-2017 PHP Romania Gazduire Claus Web | Inregistrare Domenii
Powered by Simplis