PHP i Memcached

> Dodaj do ulubionych

Jeśli potrzebujesz bufora rozproszonego, skorzystaj z biblioteki Memcached. W przeciwnym przypadku używaj APCu.

System buforowania może znacznie poprawić wydajność aplikacji. Jednym z najpopularniejszych rozwiązań tego typu jest Memcached, który działa z wieloma językami programowania, w tym PHP.

Kiedy jednak chcemy skorzystać z serwera Memcached z poziomu skryptu PHP, to mamy do wyboru dwie różne i bardzo niemądrze nazwane biblioteki klienckie: Memcache i Memcached. Są to różne biblioteki, choć nazwy ich są prawie identyczne, i obie służą do tego samego celu — pracy z Memcached.

Wiadomo jednak, że najlepszą implementacją protokołu Memcached może się pochwalić bibliteka Memcached. Ma ona kilka cennych funkcji, których brak bibliotece Memcache i jest znacznie bardziej aktywnie rozwijana.

Jeśli jednak nie potrzebujesz dostępu do instancji Memcached z serwerów rozproszonych, lepiej skorzystaj z APCu. Biblioteka APCu jest wspomagana przez projekt PHP i ma bardzo podobną funkcjonalność do Memcached.

Instalowanie biblioteki klienckiej Memached

Po zainstalowaniu serwera Memcached należy zainstalować bibliotekę kliencką Memcached. Bez niej skrypty PHP nie miałyby możliwości komunikowania się z serwerem Memcached.

W Ubuntu 14.04 bibliotekę kliencką Memcached można zainstalować za pomocą poniższego polecenia:


sudo apt-get install php5-memcached 

Zamiana Memcached na APCu

Kiedyś (przed pojawieniem się systemu Ubuntu 14.04) jako bufora kodów operacyjnych i magazynu par klucz-wartość podobnego do Memcached używano APC. Ponieważ w nowych wersjach PHP dostępny jest wbudowany bufor kodów operacyjnych, z projektu APC wydzielono APCu, który jest w istocie funkcją APC do przechowywania par klucz-wartość — zwaną również „buforem użytkownika” — pozbawioną elementów dotyczących buforowania kodów operacyjnych.

Instalowanie APCu

W systemie Ubuntu 14.04 APCu można zainstalować za pomocą poniższego polecenia terminala:


sudo apt-get install php5-apcu 

Przykład

<?php
// Zapisanie kilku wartości w buforze APCu. Ewentualnie moglibyśmy określić czas istnienia elementów, ale w tym przykładzie wartości będą istnieć do czasu, aż zostaną usunięte przez śmieciarkę APCu.
apc_store('username-1532', 'Frodo Baggins');
apc_store('username-958', 'Aragorn');
apc_store('username-6389', 'Gandalf');
 
// Gdy wartości zostaną zapisane, może z nich korzystać każdy skrypt PHP, bez względu na to, kiedy zostanie uruchomiony!
$value = apc_fetch('username-958', $success);
if($success === true)
    print($value); // Aragorn
 
$value = apc_fetch('username-1', $success); // Zmienna $success zostanie ustawiona na logiczną wartość false, ponieważ ten klucz nie istnieje.
if($success !== true) // Zwróć uwagę na operator !==, który szuka logicznego fłaszu, a nie wartości oznaczającej fałsz, takich jak 0 czy pusty łańcuch.
    print('Nie znaleziono takiego klucza.');
 
apc_delete('username-958'); // Ten klucz stanie się niedostępny.
?>

Autor: Alex Cabal

Źródło: http://phpbestpractices.org/

Tłumaczenie: Łukasz Piwko

Treść tej strony jest dostępna na zasadach licencji CC BY-SA 3.0