Skip to Content

PHP alkalmazás gyorsítása XCache segítségével

A Lighttpd az XCache-t javasolja PHP alkalmazásaink gyorsítására. Persze ez sem egy csodafegyver a rosszul megírt alkalmazásokkal szemben. Az ellen nem véd :). A következőkben röviden leírom hogyan lehet egyszerűen telepíteni az Xcache-t PHP bővítményként. Az általam telepített rendszer szoftverkörnyezete a következő:

  • Szerver OS: Debian Etch x64
  • Web szerver: Lighttpd 1.4.25 (forrásból telepítve)
  • PHP 5.2.0-8+etch16 (Debian repositoryból)
  • XCache 1.3.0 (forrásból telepítve)

A Lighttpd a PHP-t fastcgi-ként futtatja, így minden egyes PHP alkalmazás megfelelő felhasználó nevében futtatható.
Ellenőrizzük, hogy a php5-dev csomag telepítve van -e:
# dpkg -l php5-dev
ii php5-dev 5.2.0+dfsg8+etch16 Files for PHP5 module development
Amennyiben nincs telepítve, egyszerűen telepítsük a Debian repositoryból:
# sudo apt-get install php5-dev

Töltsük le (a cikk írásakor a legfrisebb XCache verzió az 1.3.0) az XCache forrását és tömörítsük ki:
# wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz
# gunzip -c xcache-1.3.0.tar.gz | tar xfpv -

Lépjünk be a forrás könyvtárba, konfiguráljuk, fordítsuk le és telepítsük az XCache-t:
# cd xcache-1.3.0
# phpize (ehhez kellett a php5-dev csomag jelenléte)
# ./configure --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager
# make -j 3 (ahol a -j paramétere a gépben található CPU(core)-ok száma +1, a többszálú fordítás érdekében)
# make install

Ha minden rendben van megtaláljuk az xcache.so PHP bővítményt a PHP bővítmény könyvtárában. Debian Etch alatt pl. itt:
# file /usr/lib/php5/20060613/xcache.so
/usr/lib/php5/20060613/xcache.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped

A fájl elérési útvonal rendszerenként változhat, sőt változik is :). Ezek után nincs más hátra, hogy a php.ini konfigurációs fájlt szerkesszük és így aktiváljuk az XCache bővítményt.
Mivel a szerver a PHP alkalmazásokat egyedi felhasználó azonosítokkal futtatja, megvan az az előny, hogy minden egyes felhasználónak saját, egyedi php.ini konfigurációs fájlt használhat. Ezért magunk választhatjuk meg, hogy mely alkalmazások alatt engedélyezzük az XCache-t. Akkor íme egy működő php.ini kiegészítés (másoljuk be a php.ini fájl végére):

[xcache-common]
zend_extension = /usr/lib/php5/20060613/xcache.so #erre figyeljünk, mert ez rendszerenként eltérő lehet!!!

[xcache.admin]
xcache.admin.enable_auth = Off
xcache.admin.user = ""
xcache.admin.pass = ""

[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 64M
xcache.count = 2
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 300
xcache.var_size = 4M
xcache.var_count = 2
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = On
xcache.mmap_path = "/xxx/xxx/xxx/laszlo.co.hu/xcache" #ez egy fájl és nem könyvtár, a PHP-nek tudnia kell írnia a fájlt
xcache.coredump_directory = "/xxx/xxx/xxx/laszlo.co.hu/xcache_coredump/" #ez egy könyvtár, a PHP-nak szintén tudnia kell írnia
xcache.cacher = On
xcache.stat = On
xcache.optimizer = On

[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = ""

Ha ezzel megvagyunk, akkor indítsuk újra a webszervert, és nézzük meg a phpinfo() függvény kimenetét. Ott lesz szépen benne, hogy XCache-t használunk.

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
with XCache v1.3.0, Copyright (c) 2005-2009, by mOo