Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Observam zi de zi cum site-urile devin din ce in ce mai mari, informatile parand ca nu se mai opresc, iar numarul userilor crescand incredibil de repede. Tot odata observam si faptul ca viteza de accesare a acestor site-uri nu scade deloc, ba chiar, in unele cazuri, avem impresia ca acestea sunt accesate mai repede ca in ziua precedenta. Acest fenomen se datoreaza bunei gestionari a memoriei folosind aplicatii specifice. In articolul anterior am discutat despre Memcached un server de gestionare a memoriei gratuit, eficient si foarte puternic.

Instalarea extensiei PECL:

Dupa cum stiti, pentru a putea realiza o conexiune cu serverul Memcached din php este nevoie de instalarea separata a unei extensii PECL. Putem instala aceasta extensie foarte usor doar apeland din terminal comanda:

[lamp@localhost]$ pecl install [numepachet]

Exista posibilitatea ca pachetul php-pear sa nu fie instalat pe serverul dumneavoasta, astfel instalarea unei extensii php prin comanda de mai sus ne mai putand fi posibila. Putem instala php-pear scriind in terminal:

[lamp@localhost]$ sudo apt-get install php-pear

Implementarea unui simplu script php:

Desi extensia necesara pentru Memcached nu vine pre-instalata odata cu php-ul, in manualul official exista o descriere destul de larga a functiilor ce pot fi apelate. Cu ajutorul acestui ‘manual’ vom incerca sa implementam un mic script php. Inainte de a incepe trebuie sa mentionez faptul ca nu putem stoca resurse in cache deoarece obiectele si tipurile non-scalare sunt serializate inainte de a fi salvate.

Un prim exemplu de script php ce utilizeaza Memcached, preluat de pe php.net ar fi:

 
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
 
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br />\n";
 
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
 
$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)<br />\n";
 
$get_result = $memcache->get('key');
echo "Data from the cache:<br />\n";
 
var_dump($get_result);

Un lucru care trebuie observat este crearea unui obiect de tip Memcached, si stabilirea unei conexiuni cu serverul local (‘localhost’ sau ‘127.0.0.1’). Propun ca pentru o mai buna intelegere a functiilor in sine, sa ‘dezbatem’ o serie de functii din clasa Memcached, asa cum ne sunt prezentate in manualul official. Clasa in sine contine un numar de 18 functii ce permit stabilirea unei conexiuni, preluarea de informatii si de date precum ‘statusul si versiunea’ serverului, adaugarea mai multor servere sau eliberarea memoriei. Acestea sunt:

Memcache::add — Permite stocarea unei variabile 'var' impreuna cu o 'cheie - key' doar daca aceasta 'cheie' nu exista inca pe server.
Memcache::addServer — Permite adaugarea unei noi conexiuni cu serverul, pe langa cele existente deja.
Memcache::close — Opreste conexiunea cu serverul.
Memcache::connect — Deschide o conexiune cu un server.
Memcache::decrement — Scade valoarea unui item.
Memcache::delete — Sterge un item de pe server.
Memcache::flush — Goleste intreaga memoriei a serverului.
Memcache::get — Afiseaza un item de pe server.
Memcache::getExtendedStats — Trimite înapoi statistici pentru fiecare conexiune.
Memcache::getServerStatus — Trimite înapoi date despre server (stari de functionare).
Memcache::getStats — Returneaza statistici despre server.
Memcache::getVersion — Afiseaza versiunea serverului.
Memcache::increment — Sporeste valoarea unui item.
Memcache::pconnect — Asemanator cu Memcache::connect, diferenta constand in faptul ca aceasta conexiune este persistenta.
Memcache::replace — Inlocuieste valoarea unui item.
Memcache::set — Stocheaza date pe server.
Memcache::setCompressThreshold — Permite comprimarea automata a valorilor mari.
Memcache::setServerParams — Modifica parametrii si statusul serverului la rulare.
Linux, PHP

6 Responses so far.

  1. Noni says:

    Multumesc de informatii, acum si eu am o utilizare mai eficienta a resurselor de memorie la VPS, dupa toate schimbarile am redus consumul de memorie cu 30%, dar a crescut utilizare procesorului , ce este drept intr-o proportie mai mica

  2. Sergiu Tot says:

    Consumul de procesor nu ar trebui sa creasca, decat insesizabil, si doar pentru cateva momente – pana cand se creaza cacheul.

  3. Stefan says:

    Mersi mult de tot pentru informatii Sergiu..sper sa numai am consumul mare la procesor 😉

  4. Catalin says:

    Sa inteleg ca odata ce cache-ul este creat, el va fi livrat direct din cache, fa a fi vorba de o rescriere a lui ? Dupa crearea informatiei procesorul nu va mai fi solicitat ?

  5. Sergiu Tot says:

    Stefan, merci de apreciere dar articolul a fost scris de data asta de Ciprian (Zapakitul) 😉

    Catalin, dupa ce s-a creat cacheul acesta va oferi informatiile gata procesate. Consumul de CPU scade foarte mult pentru ca in loc de procesare (calcule, queryuri mysql etc) doar se serveste obiectul din serverul memcached 🙂

  6. web man ploiesti says:

    Interesant, eu mai scriu aplicatii din hobby, nu mi s-a intamplat pana acum sa am nevoie de o componenta de cache la nivel de server, Memcached asta vad ca merita o incercare, citesc ca si lumea e multumita de el.