Szukaj…


Uwagi

Instalacja

Możesz zainstalować memcache za pomocą pecl

pecl install memcache

Buforowanie przy użyciu memcache

Memcache jest rozproszonym systemem buforowania obiektów i wykorzystuje key-value do przechowywania małych danych. Zanim zaczniesz wywoływać kod Memcache do PHP, musisz się upewnić, że jest on zainstalowany. Można to zrobić za pomocą metody class_exists w php. Po sprawdzeniu, czy moduł jest zainstalowany, zaczynasz od połączenia z instancją serwera memcache.

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
}else {
  print "Not connected to cache server";
}

To sprawdzi, czy sterowniki php Memcache są zainstalowane i łączą się z instancją serwera memcache działającą na localhost.

Memcache działa jako demon i nazywa się memcached

W powyższym przykładzie połączyliśmy się tylko z jedną instancją, ale możesz także połączyć się z wieloma serwerami za pomocą

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->addServer('192.168.0.100',11211);
  $cache->addServer('192.168.0.101',11211);
}

Zauważ, że w tym przypadku, w przeciwieństwie do połączenia, nie będzie żadnego aktywnego połączenia, dopóki nie spróbujesz zapisać lub pobrać wartości.

W buforowaniu istnieją trzy ważne operacje, które należy wdrożyć

  1. Przechowuj dane: dodaj nowe dane do serwera memcached
  2. Pobierz dane: pobierz dane z serwera memcached
  3. Usuń dane: Usuń już istniejące dane z serwera memcached

Magazyn danych

$cache lub obiekt klasy memcached ma set metodę, która pobiera klucz, wartość i czas do zapisania wartości dla (ttl).

$cache->set($key, $value, 0, $ttl);

Tutaj $ ttl lub czas życia to czas w sekundach, przez który memcache ma przechowywać parę na serwerze.

Otrzymać dane

$cache lub obiekt klasy memcached ma metodę get , która pobiera klucz i zwraca odpowiednią wartość.

$value = $cache->get($key);

W przypadku, gdy dla klucza nie zostanie ustawiona wartość, zwróci wartość null

Usunąć dane

Czasami może być konieczne usunięcie pewnej wartości pamięci podręcznej. $cache lub instancja memcache ma metodę delete , której można użyć do tego samego.

$cache->delete($key);

Mały scenariusz buforowania

Załóżmy prosty blog. Będzie zawierać wiele postów na stronie docelowej, które są pobierane z bazy danych przy każdym ładowaniu strony. Aby zmniejszyć liczbę zapytań SQL, możemy użyć memcached do buforowania postów. Oto bardzo mała implementacja

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
    if(($data = $cache->get('posts')) != null) {
      // Cache hit
      // Render from cache
    } else {
      // Cache miss
      // Query database and save results to database
      // Assuming $posts is array of posts retrieved from database
      $cache->set('posts', $posts,0,$ttl);
    }
}else {
  die("Error while connecting to cache server");
}

Pamięć podręczna za pomocą pamięci podręcznej APC

Alternative PHP Cache (APC) to darmowa i otwarta pamięć podręczna opcodu dla PHP. Jego celem jest zapewnienie bezpłatnej, otwartej i solidnej struktury do buforowania i optymalizacji pośredniego kodu PHP.

instalacja

sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart

Dodaj pamięć podręczną:

apc_add ($key, $value , $ttl);
$key = unique cache key
$value = cache value
$ttl = Time To Live;

Usuń pamięć podręczną:

apc_delete($key);

Przykład ustawienia pamięci podręcznej:

if (apc_exists($key)) {
    echo "Key exists: ";
    echo apc_fetch($key);
} else {
    echo "Key does not exist";
    apc_add ($key, $value , $ttl);
}

Wydajność :

APC jest prawie 5 razy szybszy niż Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow