PHP i Memcached
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