Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu

Moduł MEMCACHE zapewnia wygodne interfejsy proceduralne i obiektowe do mechanizmu buforowania MemCached. MemCache to bardzo skuteczny demon buforowania, który został specjalnie zaprojektowany, aby zmniejszyć ładunek do bazy danych do wysokocianowych, dynamicznych aplikacji internetowych.

Moduł MemCache zapewnia również obsługiwanie sesji. Jeszcze dokładna informacja O memCached można znaleźć na stronie internetowej MemCached.org

Zasadniczo opisy instalacji i ustawienia w języku rosyjskim są już gotowe i możesz je przeczytać.

Utrzymanie z powodu utrzymywania pamięci podręcznej Możesz dowolne typy danych: zarówno zmienne, przedmioty, jak i tablice, Ale nie zasoby!

Jeśli każdy obiekt ma właściwość w swoim kompozycji - zasób, taki jak połączenie bazy danych, lub zawiera inny obiekt o takich właściwościach, wówczas sytuacja ta musi być przetworzona oddzielnie, na przykład, nadrzędna metodę __SLEEP (), w której wymaga tego zasobów Aby "zabijać" i metodę __Wakeup (), w której zasób ten należy ożywić.

W rzeczywistości wszystkie te metody można podzielić na 3 grupy:

  1. Pracować z wartościami
  2. Pracuj z serwerami i połączeniami
  3. Otrzymywanie informacji

Pracować z wartościami

Metody tej grupy pozwalają wykonać następujące czynności:

  • Ustaw wartości
  • Usuń te wartości
  • Wymień te wartości
  • Skontaktuj się z tymi wartościami według klucza
  • Zarządzaj żywotnością wartości

Para specyficznych sposobów przyrostu i zmniejszania wartości całkowitych.

MemCache :: Set ()
MemCache :: Dodaj ()

Pozwól, aby ustawić wartość, ustawić kompresję i żywotność dla tej wartości. Jedyną różnicą w zachowaniu tych metod jest fakt, że metoda memcache :: dodać - zwróci fałszywe, jeśli wartość z takim kluczem jest już zainstalowana.

bool. MemCache :: Dodaj.
Bool. MemCache :: Set. (String $ Key, Mieszany $ Var [, Int $ flag [, int $ wygasa]])

  • string $ Key - klucz Kluczowy używający go, obsługujemy wartość.
  • wartość mieszana $ VAR.
  • Stałych stałych
połącz ("LocalHost", 11211, 30); $ Cache-\u003e Dodaj ("MyFirst", 1000, MemCache_Compressed, 15); $ Cache-\u003e Set ("MySecond", 2000, MemCache_Compressed, 15);

MemCache :: Get ()

Zwróci żądaną wartość lub false w przypadku awarii lub jeśli wartość z takim kluczem nie zostanie jeszcze zainstalowana.

Możesz przejść tablicę klawiszy wartości, a następnie MemCache :: GET zwróci również tablicę, będzie zawierać znalezione pary wartości klucza.

Ostrzeżenia!

Jeśli odwrotny ukośnik jest obecny w nazwie klucza, to wyniki pracy będą nieprzewidywalne!

MemCached i niektóre rany: Według niektórych danych, on (czasami) błędy przepełnienia buforaKtóry od czasu do czasu prowadzi do nadpisywania [częściowych] danych, a zatem uniemożliwia opuszczenie struktur, nie zapomnij sprawdzić, czy w wyniku otrzymanej tablicy lub memCache :: Get, Bool zwróci Bool, Dobule lub długi, oznacza to, że poszło nie tak.

strunowy MemCache :: Get. (String $ Key [, int & $ flags])
Szyk. MemCache :: Get. (Array $ Keys [, Array & $ flags])

  • ciąg $ Key to klucz Kluczowy lub tablicę kluczy, których należy uzyskać wartości.
  • int $ flaga - cel tego parametru pozostaje dla mnie tajemnicą. Próbowałem użyć niektórych wartości całkowitych, ale nie dał żadnego efektu. Tak, a przykłady są podane głównie bez jego użycia, z którego zostałem zawarty: Możesz pracować idealnie bez tego :)
połącz ("LocalHost", 11211, 30); $ Cache-\u003e Dodaj ("MyFirst", 1000, MemCache_Compressed, 15); $ Cache-\u003e Set ("MySecond", 2000, MemCache_Compressed, 15); Print_r ($ Cache-\u003e Get (Array ("MyFirst", "MySecond"));

Wynik:

Array (\u003d\u003e 1000 \u003d\u003e 2000)

MemCache :: Usuń ()

Usuń wartość z pamięci podręcznej.

Komentarz:

Ta metoda nie zawsze działa (zależy od wersji oprogramowania)! Na końcu strony są przypadki, gdy MemCache :: Usuń prace, a gdy nie.

Cóż, z stabilnych opcji pozostaje tylko w celu przywrócenia niepotrzebnych wartości:

$ cache-\u003e zestaw ("trzy", null);

Tylko minus - klucz w tym przypadku nie nigdzie nie pójdzie

strunowy MemCache :: Usuń. (String $ Key [, int $ limit \u003d 0])

  • string $ Key to wartość klucza, którą chcesz usunąć.
  • int $ Timeout - Ten parametr jest również przestarzały i nie jest obsługiwany, domyślnie jest 0 sekund. Nie używaj tej opcji.

MemCache :: Wymień ()

Nadpisać istniejącą wartość.

MemCache :: Rentst () należy użyć do wymiany Żadna wartość. W przypadku, gdy wartość z takim kluczem nie istnieje, memCache :: repress () zwraca fałszywe. W przeciwnym razie MemCache :: Rent () zachowuje się tak samo jak MemCache :: Set (). Możesz także użyć funkcji MEMCACHE_REPLACE ()

strunowy MemCache :: zastąp (String $ Key, Mieszany $ Var [, Int $ flag [, int $ wygasa]])

  • ciąg $ Key to klucz, którego wartość musi zostać wymieniona.
  • mieszany $ VAR - nowa wartość.
  • int $ flag - flaga, która określa, aby użyć kompresji (tutaj i potrzebować zlib) dla zapisanej wartości, można użyć stałych
  • int $ wygasa - żywotność wartości (pamięć podręczna). Jeśli zero, a następnie w nieskończoność. Możesz także użyć znacznika czasu lub numeru sekund, począwszy od bieżącego czasu, ale wtedy liczba sekund nie może przekraczać 2592000 (30 dni).
połącz ("LocalHost", 11211, 30); $ Cache-\u003e Dodaj ("One", 111, 0, 15); $ Cache-\u003e Dodaj ("dwa", 222, 0, 15); $ Cache-\u003e Dodaj ("Trzy", 333, 0, 15); $ Cache-\u003e Wymień ("Trzy", 777); Print_r ($ Cache-\u003e Get (Array ("One", "dwa", "trzy"))); Array (\u003d\u003e 111 \u003d\u003e 222 \u003d\u003e 777)

MemCache :: Przyrost ()

Zwiększa wartość określonego klucza do określonej wartości. Jeśli wartość określonego klucza nie jest numeryczna i nie można go przekonwertować na liczbę, zmienia jego wartość do wartości określonej jako drugi parametr. MemCache :: Przyrost () nie tworzy przedmiotu, jeśli nie istnieje.

Nie zalecaj używania memCache :: przyrost () z wartościami, które zostały skompresowane (zainstalowane z flagą memCache_dompressed), ponieważ wtedy pojawi się "niespodzianki", gdy próbujesz uzyskać te wartości z MemCache :: Get ()

Osobiście sprawdziłem i nie zauważyłem zawodników :)

int. MemCache :: Przyrost

  • string $ Key to klucz, którego wartość musi zwiększyć.
  • int $ wartość - wartość przyrostu.
połącz ("LocalHost", 11211, 30); $ Cache-\u003e zestaw ("ktoś", 10, 0, 5); $ cache-\u003e przyrost ("ktoś", 10, 0, 5); $ cache-\u003e przyrost ("ktoś", 10, 0, 5); Echo $ cache-\u003e zdobądź ("ktoś"); // wydziela 30

MemCache :: Decreme ()

Zmniejsza wartość określonego klucza do określonej wartości. Podobnie jak MemCache :: Przyrost (), bieżąca wartość elementu jest przekształcana w numeryczny i po tym maleje

int. MEMCACHE :: Zmniejszenie (String $ Key [, int $ Value \u003d 1])

  • ciąg $ Key to klucz, którego wartość jest zmniejszenie.
  • int $ wartość - wartość rementująca.

MemCache :: Flush ()

MemCache :: Flush () powoduje nieprawidłowe nieprawidłowe wartości. MemCache :: Flush () nie wyłącza zasobów pamięci, ale tylko zaznacza wszystkie elementy jako przestarzałe, a zajmowana pamięć będzie dostępna do użycia nowych wartości. Możesz także użyć funkcji MEMCACHE_FUSH ()

bool. MemCache :: Flush. (unieważnić)

Poniższy przykład nic nie przyniesie.

połącz ("LocalHost", 11211, 30); $ Cache-\u003e zestaw ("ktoś", 111, 0, 5); $ Cache-\u003e Set ("Somevo", 222, 0, 5); $ Cache-\u003e zestaw ("Sometreme", 333, 0, 5); $ Cache-\u003e Flush (); // Oczyść pamięć podręczną Print_R ($ Cache-\u003e Getwa ("Someone", "Somevo", "Sometreme"));

Pracuj z serwerami i połączeniami.

MemCache może pracować zarówno z jednym serwerem, jak i basenem (zestawem) serwerów.

Jeśli używasz tylko jednego serwera serwisu pamięci podręcznej, musisz utworzyć obiekt pamięci podręcznej, aby zainicjować pracę i użyć metody MemCache :: Connect.

Jeśli zamierzasz utworzyć pulę serwerów, konieczne będzie najpierw utworzenie obiektu pamięci podręcznej, a następnie metodą MemCache :: Addserver. Dodaj do niego wymaganą liczbę serwerów.

MemCache :: Connect ()

Ustawia połączenie z serwerem MemCached. Połączenie, które zostało otwarte za pomocą memCache :: Connect () zostanie automatycznie zamknięty na końcu skryptu, ale można go zamknąć jawnie za pomocą MemCache :: Close (). Możesz także użyć funkcji MEMCACHE_CONNECT (). Sterowanie prawdą w przypadku pomyślnego zakończenia lub fałszu w przypadku błędu.

bool. MemCache :: Connect.

połącz ("LocalHost", 11211, 30);

MemCache :: PConnect ()

Ta metoda jest podobna do MemCache :: Connect () z jedyną różnicą, że ustanawia stałe połączenie. Połączenie nie jest zamknięte na końcu skryptu i wywołania MEMCACHE :: Close (). Możesz także użyć funkcji MEMCACHE_PCONNECT (). Zwraca obiekt memCache w przypadku pomyślnego zakończenia lub fałszu w przypadku błędu.

mieszany. MemCache :: PConnect. (String $ host [, int $ port [, int $ limitout]])

  • Ten parametr może również określić inne transporty jako UNIX: /// path / do /memCached.sock I.e. Użyj gniazd UNIX, w tym przypadku port musi być ustawiony na 0.
  • Ustaw ten parametr na 0, jeśli zakłada się użycie gniazd.
  • int $ limit - limit w kilka sekund, aby połączyć się z demonem. Pomyśl dwa razy przed zmianą wartości domyślnej 1 sekundy - możesz stracić wszystkie zalety buforowania, jeśli połączenie nastąpi zbyt długo.
pCONNECT ("LocalHost", 11211, 30);

MemCache :: Close ()

Zamyka połączenie z serwerem MemCached. Ta funkcja nie zamyka stałych połączeń, które zamyka tylko w czasie wyłączenia / ponownego uruchomienia serwera WWW. Możesz także użyć funkcji MEMCACHE_CLOSE ().

bool. MemCache :: blisko. (unieważnić)

MemCache :: addserver ()

Dodaje serwer do puli połączeń. Połączenie, które zostało otwarte za pomocą MemCache :: Addserver () zostanie automatycznie zamknięty na końcu skryptu, można również zamknąć ręcznie z MemCache :: Close (). Możesz użyć funkcji MEMCACHA_ADD_SERVER ()

Podczas korzystania z MemCache :: Addserver (w przeciwieństwie do MemCache :: Connect () i MemCache :: PCONKECT ()) Połączenie sieciowe nie jest zamontowane, dopóki nie jest konieczne. W ten sposób nie ma kosztów ogólnych podczas dodawania dużej liczby serwerów w basenie, nawet jeśli nie są wymagane w ogóle.

Basen serwera zapewnia wyższą tolerancję błędów. Wszelkie błędy gniazda lub błędy MemCached na poziomie serwera (z wyjątkiem błędów pamięci) powodują redystrybucję zasobów. Takie błędy klienta jako dodawanie istniejącego klucza nie powodują awarii.

Komentarz:

Zwraca prawdę w przypadku pomyślnego zakończenia lub fałszu w przypadku błędu.

bool. MemCache :: Addserver. (String $ Host [, int $ Port \u003d 11211 [, Bool $ uporczywe [, int $ Waga [, int $ timeout [, int $ Retry_interval [, Bool $ Status [, Callable $ season_callback [, int $ timeoutmms]]]]]]]]]]] ]]])

  • string $ Host - Gospodarz MemCached. Ten parametr może również określić inne transporty jako UNIX: /// path / do /memCached.sock I.e. Użyj gniazd UNIX, w tym przypadku port musi być ustawiony na 0.
  • iNT $ Port to port, na którym MemCached słucha połączenia. Ustaw ten parametr na 0, jeśli zakłada się użycie gniazd.
  • bool $ uporczywe - ustawia użycie stałego połączenia. Domyślnie prawda.
  • int $ Waga - Im bardziej prawdopodobne, że ten serwer zostanie wybrany do przechowywania wartości. Te. Jest to rodzaj "wagi" serwera we wspólnej puli, pośrednio, jest to również szacowany obciążenie na serwerze.
  • int $ limit - limit w kilka sekund, aby połączyć się z demonem. Pomyśl dwa razy przed zmianą wartości domyślnej 1 sekundy - możesz stracić wszystkie zalety buforowania, jeśli połączenie nastąpi zbyt długo.
  • ciąg $ Timeoutmms nie jest opisany.

Otrzymywanie informacji

MemCache :: GetExtendedStats ()

Zwraca dwuwymiarową, asocjacyjną tablicę statystyk serwerów. Grafika kluczy serwera "Host: Port". Wartości zawierają indywidualne parametry statystyk. Odmówione serwery będą miały fałszywe. Możesz także użyć funkcji MEMCACHE_GET_EXTEDED_STATS ()

Komentarz:

Ta funkcja została dodana do MemCache w wersji 2.0.0

szyk. MemCache :: GetExtiedStats. ([String $ Type [, Int $ Slabid [int $ limit \u003d 100]]]

A teraz dowcipy:

Rodzaj statystyk "Cachedump" został usunięty z MemCached ze względów bezpieczeństwa

Przykład wyjścia informacyjnego (połączenie bez parametrów):

Array (\u003d\u003e Array (\u003d\u003e 5179 \u003d\u003e 966862 \u003d\u003e 1,436505233 \u003d\u003e 1.4.5 \u003d\u003e 64 \u003d\u003e 160.302880 \u003d\u003e 483.975109 \u003d\u003e 6 \u003d\u003e 358080 \u003d\u003e 13 \u003d\u003e 15037476 \u003d\u003e 3501979 \u003d\u003e 46 \u003d\u003e 11507898 \u003d\u003e 3529578 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 164390608080 \u003d\u003e 11298732744 \u003d\u003e 67108864 \u003d\u003e 1 \u003d\u003e 0 \u003d\u003e 4 \u003d\u003e 0 \u003d\u003e 3295454 \u003d\u003e 7623 \u003d\u003e 3501915 \u003d\u003e 0 \u003d\u003e 1825755) ...)

MemCache :: GeterSperstatus ()

Zwraca status serwera serwera / offline. Możesz także użyć funkcji memcache_get_server_status ()

Komentarz:

Ta funkcja została dodana do MemCache w wersji 2.0.0

int. MemCache :: Getrygerstatus. (String $ Host [, int $ port \u003d 11211])

  • string $ Host - Gospodarz MemCached.
  • iNT $ Port to port, na którym MemCached słucha połączenia.

MemCache :: Getstats ()

Zwraca tablicę asocjacyjną ze statystykami serwera. Grafika kluczy odpowiada statystykom parametrów i wartości wartości parametru. Możesz także użyć funkcji memcache_get_stats ()

szyk. MemCache :: Getstats.s ([String $ Type [, int $ Slabid [, int $ limit \u003d 100]])

  • string $ Type - Rodzaj statystyk. Ważne wartości: (reset, malloc, mapy, cachedump, płyty, elementy, rozmiary). Zgodnie z specyfikacją protokołu MemCached te dodatkowe argumenty "można zmienić dla wygody deweloperów."
  • int $ Slabid jest używany, gdy pierwszy parametr jest ustawiony na "Cachedump" definiuje serwer, który będzie używany do debugowania.
  • int $ limit - używane, gdy pierwszy parametr jest ustawiony na "Cachedud" ogranicza liczbę rekordów w wysypisku.

MemCache :: GetVersion ()

Zwraca numer wersji łańcucha. Możesz także użyć funkcji memcache_get_version ().

strunowy MemCache :: Getversion. (unieważnić)

MemCache :: setcompressshreshold ()

Zapewnia automatyczną kompresję dużych wartości. Możesz także użyć funkcji. memcache_set_compress_threshold ()

Komentarz:

Ta funkcja została dodana do MemCache w wersji 2.0.0

bool. MEMCACHE :: SetCompresshreshold. (int $ próg [, float $ min_savings])

  • int $ Próg to minimalna długość wartości, którą chcesz automatycznie kompresować.
  • float $ min_savings - ustawia współczynnik kompresji. Określona wartość powinna wynosić od 0 do 1. Wartość domyślna wynosi 0,2 daje co najmniej 20% oszczędności kompresji.

MemCache :: Setservarams ()

Zmienia parametry serwera bezpośrednio podczas wykonania. Możesz także użyć funkcji. memcache_set_server_params ().

Zwraca prawdę w przypadku pomyślnego zakończenia lub fałszu w przypadku błędu.

Komentarz:

Ta funkcja została dodana do MemCache w wersji 2.0.0

bool. MemCache :: SetserverParams. (String $ Host [, Int $ Port \u003d 11211 [, int $ timeout [, int $ retry_interval \u003d false [, bool $ status [, wywołany $ dead_callback]]]]]])

  • string $ Host - Gospodarz MemCached.
  • iNT $ Port to port, na którym MemCached słucha połączenia.
  • int $ limit - limit w kilka sekund, aby połączyć się z demonem. Pomyśl dwa razy przed zmianą wartości domyślnej 1 sekundy - możesz stracić wszystkie zalety buforowania, jeśli połączenie nastąpi zbyt długo.
  • int $ Retry_interval - Ustawia, jak często przeprowadzono wywiad, wartość domyślna wynosi 15 sekund. Ustawianie tego parametru w -1 wyłącza automatyczną rekrutację.
  • bool $ Status - zaznacza serwer jako online. Ustawianie tego parametru w False i Retry_interval -1 umożliwia przechowywaniem odgryzania serwera w basenie Active Server, aby nie wpływać na kluczowych algorytmów dystrybucji. Odwołania do tego serwera zostaną dystrybuowane między pozostałymi dostępnymi serwerami. Domyślnie wartość jest prawdziwa, która jest, serwer powinien być rozpatrywany online.
  • calable $ dead_callback - umożliwia użytkownikowi określenie funkcji wywołania zwrotnego, aby rozpocząć, gdy zostanie wykryty błąd. Funkcja musi odbierać dwa parametry, nazwa hosta i port serwerów nie powiodła się.

Ten artykuł jest charakter "karetki". Szczegółowy opis konkretnych działań, które umożliwiają zainstalowanie i skonfigurowanie memCached na serwerze.

Zacznijmy od definicji.

Memcached. - Oprogramowanie, które wdraża usługi buforowania danych w pamięci RAM na podstawie tabeli Hash.

Wstępne dane:

  • VPS.system operacyjny Debian.;
  • obecna strona, do której można skontaktować się z FTP, SSH.

Zacznijmy od ostatniego przedmiotu. Ze względu na prowadzony zasób internetowy (lub jego podobieństwo), możemy po prostu i szybko dowiedzieć się, co zainstalowaliśmy (może to być, że między innymi znajdziemy MemCached). Utwórz plik z nazwą info.php, w którym piszesz:

Wykonaj kod, kontaktując się z adresem http://example.com/info.php:

Jeśli między innymi znajdziesz podobny rekord - oznacza to, że wszystko jest w porządku, a sprawa została już wykonana. W przeciwnym razie otrzymamy ten wynik po działaniach opisanych w niniejszej publikacji.

Instalowanie serwera MemCached.

Zacznijmy instalować zespół

Apt-Get Install MemCached PHP5-MemCache

Czekam na zakończenie instalacji. Po sprawdzeniu wyników przez zespół netstat.

W rezultacie otrzymujemy:

TCP 0 0 *: 11211 *: * Słuchaj 13053 / MemCached

Jak widzimy, domyślnie domyślnie "słuchaj" port 11211. W konsekwencji, za pośrednictwem tego portu, każdy może się połączyć i korzystać z naszego serwera MemCached. Porzucony sam, damy takie prawo do serwera (LocalHost). Otwórz plik /etc/memCached.conf przez panel sterowania lub przez konsolę:

Vi /etc/memCached.conf.

Ten plik zawiera szczegółowe komentarze. Pamiętaj, aby zapoznać się z nimi.

Dodaj sznur -l 127.0.0.1.

Uruchom ponownie serwer MemCached z poleceniem:

/etc/init.d/memCached restart.

I sprawdź ponownie:

NetStat -Tap |. GREP MEMCACHED.

W rezultacie musimy zdobyć coś takiego

TCP 0 0 LocalHost.Localdo: 11211 *: * Słuchaj 13092 / MemCached

Teraz MemCached działa tylko na serwerze lokalnym.

Instalowanie MemCache.

Lista poleceń (wersja MEMCACHE może się różnić!):

APT-Get Instalacja PHP5-DevmemCache-dev PECL Pobierz MEMCACHE TAR XZVF MEMCACHE-2.2.6.TGZ CD MEMCACHE-2.2.6 / PHPIZA && Lib / php5 / 20060613 / echo "Extension \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

Uruchom ponownie Apache:

Apachetem wdzięczny.

Sprawdź skrypt przez nas wcześniej pod adresem http://example.com/info.php. Teraz musimy znaleźć tam memcache.

Sprawdź memcuzed pracy

Utwórz plik.PHP plik i uruchom go.

podłącz ("Localhost", 11211) lub Exit ("Nie można połączyć się z serwerem MemCached"); $ version \u003d $ memcache-\u003e getversion (); Echo "Wersja" Server "S:" $ wersja ".
n "; $ TMP_Object \u003d Nowy StdClass; $ TMP_Object-\u003e str_attr \u003d" Test "; $ TMP_Object-\u003e INT_ATTR \u003d 123; $ MemCache-\u003e Set (" Key ", $ TMP_Object, False, 10) lub Die (" To " Okazało się, aby pozostawić wpis w MemCached "); Echo" Dane zapisu do pamięci podręcznej MemCached (dane będą przechowywane przez 10 sekund)
n "; $ Get_result \u003d $ MemCache-\u003e Get (" Key "); Echo" Dane zapisane w MemCached:
n "; var_dump ($ get_result);?\u003e

Wynik prac skryptów:

Wersja serwera: 1.4.13 Piszymy dane do pamięci podręcznej MEMCACHED (dane będą przechowywane 10 sekund) Dane nagrane w MemCached: obiekt (STDClass) # 3 (2) (["str_attr"] \u003d\u003e String (4) " Test "[" INT_ATTR "] \u003d\u003e int (123))

Czy wszystko jest tak lub prawie tak? Wtedy wszystko jest w porządku. Jeśli nie, spróbuj powtórzyć procedury.

Dziś zajmiemy się interesującym mechanizmem buforowania danych: PHP MemCache.. Cudowną stroną Memcahe jest to, że możemy combinić wszystko, z zapytań SQL, do obiektów i innych struktur danych.

Co to jest MemCache.

MemCache. - Nie jest łatwa algorytm technologii ani buforowania, przede wszystkim jest program serwera działa na serwerze WWW. Jeśli korzystasz z usług hostingowych, a następnie przed użyciem membrade w aplikacji, musisz upewnić się, że memcahe jest dostępny. Możesz to zrobić za pomocą funkcji PHPINFO ().

Pojęcie

Upewniając się, że serwer MEMCAHE jest dostępny do użytku, zapoznajmy się z koncepcją tego mechanizmu buforowania. Najbardziej atrakcyjnym użyciem PHP Memcahe jest to, że wszystkie dostępne dane są przechowywane w pamięci serwera. Taka zasadę przechowywania danych, nie tylko oszczędza czas procesora na formacji ich ponownie i ponownie, ale także zwiększa szybkość dostępu do nich.

W wersji uproszczonej koncepcja pracy MEMCAHE można ustawić w ten sposób: Często używane obiekty PHP są przechowywane i zapisywane w pamięci RAM serwera jako zestaw "Klucz - obiekt", w razie potrzeby, zapisane wczesne obiekty są pobierane z serwera Pamięć przechodząc do licznych połączeń do bazy danych testowej i cykli. W przypadku, gdy algorytm PHP MEMCAHE nie wykrywa żądanego obiektu w pamięci, wymagany obiekt jest tworzony w zwykły sposób i utrzymuje się w pamięci podręcznej.

Jak pracować z serwerem MemCache w PHP

Aby pracować z serwerem MemCache, potrzebujemy jednego z bibliotek PHP-MemCache lub PHP-MemCached.

Wybór tej lub tej biblioteki zależy od indywidualnych potrzeb dewelopera, w większej części, są one bardzo podobne do siebie, z różnicą pHP-MEMCACHED. Zapewnia pewne wielkie możliwości pracy, takie jak:

  • Klawisze wersji Tokey CAS
  • Zwrotny (zwrotne)
  • Metoda GetDelayed () umożliwia obniżenie czasu oczekiwania, odkładające rzeczywiste klucze do odczytu
  • Wsparcie protokołu binarnego
  • Możliwość unikania serializacji za pomocą IgBinary

Oba moduły pHP-Memcach. i pHP-MEMCACHED.nie są standardowe dla PHP, ale dostępne w repozytorium PECL.

W przypadku pracy nie na własnym serwerze, ale na serwerze hosta nie musisz wybierać, wszystko zostanie już skonfigurowane.

Przykład pracy

Natychmiast zwrócę uwagę na fakt, że ten przykład będzie działał na PHP-Memcach i PHP-Memcached to samo.

PHP MemCach wykorzystuje następujące metody pracy z danymi:

  1. zdobądź - aby uzyskać obiekt z pamięci podręcznej;
  2. ustaw - obiekt wejścia według klawisza w pamięci podręcznej;
  3. dodaj - nagrywanie obiektu w pamięci podręcznej, jeśli nie ma takiego klucza w nim;
  4. wymień - obiekt wejścia do pamięci podręcznej, na wypadek, gdy klucz już tam jest.

Podam prymitywny przykład używania buforowania za pomocą serwera MEMCACHA.

1
2
3
4
5
6
7

$ MEMCACHE \u003d Nowy MemCache ();
$ MemCache -\u003e PCONNECT ("LocalHost", 3211); // W ruchu. Domyślnie możesz użyć dowolnego portu
$ Key \u003d "Key_1";
$ Value \u003d tablica (1, 2, 3, 4, 5);
$ Expire \u003d 600;
$ MemCache -\u003e Set ($ Key, $ Value, 0, $ Wygasa); // Utrzymuj wartość przez 10 minut
$ MemCache -\u003e Get ("Key_1"); // Uzyskaj wcześniejszą tablicę

Podczas korzystania z serwera członkowskiego natychmiast dla wielu projektów, pamiętaj, że dane są rejestrowane w jednym pamięci RAM. Oznacza to, że jeśli piszesz nowe wartości z różnych projektów do tego samego klucza, ponieważ zarówno dla tej ostatniej wartości będzie dostępna w pamięci.

W wyniku zastosowania informacji podanych w niniejszym artykule możesz zainstalować i skonfigurować serwer MemCached i żądane rozszerzenie PHP w celu interakcji z nim, a także usługi analizy analizy analizy i statystyki PHPMEMCACHEDADMN

Instalacja wystąpi pod Debian z serwerem Bekenda. Jeśli masz połączenia robocze + PHP5-FPM, wystarczy wymienić komendy Apache2 do PHP5-FPM
Dolendia robocza: Menedżer plików do łączenia oprogramowania z wbudowanym edytorem lub kitami.

Powiedzmy teraz, mamy już tę stronę hosting http://example.com

Aby rozpocząć, musisz określić, w jaki sposób PHP jest skonfigurowany (nagle już zainstalowany MemCached?)). Aby to zrobić, u źródła witryny tymczasowo utwórz info.php z kodem

Teraz spójrz na to http://example.com/info.php

Jeśli zobaczymy, że jest podobny rekord, oznacza to, że wszystko jest w porządku, pożądane rozszerzenie PHP jest ustawione.
Jeśli nie, oznacza to, że musisz pracować.

Jak zainstalować serwer MemCached

Przed instalacją musisz zaktualizować repozytorium

APT-Get Update & & Apt-Get Upgrade

Teraz zainstaluj moduł MemCached i PHP pod nim

Apt-Get Install MemCached PHP5-MemCache

Istnieje instalacja. Po ukończeniu go sprawdź, co się stało

W rezultacie zobaczymy coś takiego

TCP 0 0 *: 11211 *: * Słuchaj 13053 / MemCached

Teraz musisz ponownie uruchomić Apache lub PHP-FPM

Usługa Apache2 restart.

Konfigurowanie MEMCACHED.

Teraz, gdy serwer jest zainstalowany, musi być dostarczony. Nie jest trudne i nie zajmie dużo czasu.

Zamknij memcached z dostępu z zewnątrz

Jak widać, MemCached wisi na domyślnym porcie 11211. Ponieważ MemCached nie ma wbudowanych mechanizmów uwierzytelniania, okazuje się, że każdy może połączyć się z zewnątrz i używać go do własnych celów. Aby tego uniknąć, możesz zamknąć port 11211 za pomocą zapory lub skonfigurować serwer MEMCACHED, aby mógł być używany tylko z lokalnego hosta. Ostatni jest opisany poniżej.

  1. Dodaj łańcuch -l 127.0.0.1
  2. Reboot MemCached.

    Uruchomienie ponownego uruchomienia ponownego uruchomienia.

    /etc/init.d/memCached restart.

I sprawdź ponownie

NetStat -Tap |. GREP MEMCACHED.

W rezultacie musimy to zobaczyć

TCP 0 0 LocalHost.Localdo: 11211 *: * Słuchaj 13092 / MemCached

Także po wszystkich zmianach nie zapomnij ponownie uruchomić Apache

Usługa Apache2 restart.

Zwiększ głośność pamięci roboczej MEMCACHED

Domyślnie memCached jest przypisany do użycia 64 megabajtów pamięci RAM. Zwiększyę się do 1024, przejście z parametrów serwera

  1. Otwórz plik konfiguracyjny VI /etc/memCached.conf
  2. Znajdź wartość -m 64
  3. Zmień go na -m 1024
  4. Restart MemCached Service MemCached Restart

Sesje PHP przechowywanie w memcached

Jeśli przez jeden serwer lub klaster jest używany kilka różnych witryn, mogą przechwycić się nawzajem sesje i uzyskać dostęp do kont użytkowników, co jest potencjalnym niebezpieczeństwem.

Możesz przyspieszyć PHP, przeniesioną pamięć sesji z dysku twardego do pamięci RAM za pomocą MEMCACHED

Musisz wiedzieć, jakiego rozszerzenia PHP, którego używasz, MemCache lub MemCached. i wyjaśnij, co masz, możesz użyć PHPINFO (), są subtelność w ustawieniach, bądź ostrożny

Metoda ekspansji MemCache

  1. Open /etc/php5/mods-available/memCache.ini.
  2. Dodaj session.Save_handler \u003d memCache session.Save_path \u003d "TCP: //127.0.0.1: 11211"

Metoda do ekspansji MemCached

  1. Open /etc/php5/mods-available/memCached.ini.
  2. Dodaj session.save_handler \u003d memcached session.save_path \u003d "127.0.0.1:11211"
  3. Uruchom ponownie Usługa Apache Apache2 Restart

Sprawdź phpinfo.

Teraz musisz sprawdzić, co mamy na wyjściu. Aby to zrobić, otwórz stronę z phpinfo () i szukamy w kodzie session.save_path w kolumnie wartości lokalnych. Znaczenie powinno być TCP: //127.0.0.1: 11211 lub 127.0.0.1:11211 ..conf), i szukamy
php_admin_value session.save_path.

Nawiasem mówiąc, można również użyć dyrektywy PHP_Value, aby skonfigurować nie cały serwer na całym świecie, ale tylko określone witryny. W tym celu możesz edytować.Htaccess w korzeniu witryny

PHP_Value session.Save_handler "MEMCACHE" PHP_Value session.Save_path "TCP: //127.0.0.1: 11211"

Gotowy plik konfiguracyjny pracy MeMcached

Możesz także skonfigurować wszystko dla swoich potrzeb, plik konfiguracyjny zawiera szczegółowe uwagi:

# MemCached Domyślny plik konfiguracyjny # 2003 - Jay Bonci< > # Ten plik konfiguracyjny jest odczytywany przez skrypt Start-MemCached dostarczony jako część rozkładu Debiana GNU / Linux. # Uruchom MemCached jako demona. To polecenie jest dorozumiane i nie jest potrzebne do biegania Demon. Zobacz readme.debian, który jest wyposażony w ten pakiet, aby uzyskać więcej informacji. -d # dziennik MEMCACHED "S Wyjście do / var / Log / Membached LogFile /var/log/memCached.log # Be Verbose # -v # Bądź jeszcze lepszy # -vv # Start od czapki 64 megs pamięci. To "S rozsądny, a domyślny demona # Należy pamiętać, że demon wzrośnie do tego rozmiaru, ale nie rozpoczyna się trzymania tej dużej ilości pamięci # pamięci w megabajtach, co jest przypisane do buforowania. Domyślnie, 64 megabajty. # -M 64-M 1024 # Port, na którym powiesi memCached, domyślnie 11211 -p 11211 # Uruchom demona jako root. W tym pliku konfiguracyjnym jest domyślnie uruchomi się domyślnie uruchomienie funkcji ROOT, jeśli nie ma polecenia nr al # -u -u -u # Określ, który adres IP słuchać. Domyślnie jest słuchanie wszystkich adresów IP # Ten parametr jest jednym z jedynych środków zabezpieczających, które ma MemCached, więc upewnij się, że # Słuchanie na interfejsie zapory. -L 127.0.0.0.1 # Ogranicz liczbę jednoczesnych połączeń przychodzących. Domyślnie demona jest 1024 # #-C1024 # Zablokuj wszystkie pamięci Otoczonej. Skonsultuj się z readme i strony główną, zanim zrobisz ten błąd # -k # Powrót, gdy pamięć jest wyczerpana (zamiast usunąć ITMS) # -m # maksymalizować plik podstawowy Limit # -r.

Instalowanie rozszerzenia memCache

Polecenia są pokazane poniżej, z którymi można zainstalować rozszerzenie PHP z konsoli ręcznie

APT-Get Instalacja PHP5-DevmemCache-dev PECL Pobierz MEMCACHE TAR XZVF MEMCACHE-2.2.6.TGZ CD MEMCACHE-2.2.6 / PHPIZA && Lib / php5 / 20060613 / echo "Extension \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

Uruchom ponownie Apache, aby zmiany wejdą w życie

Usługa Apache2 restart.

Jak sprawdzić memCached pracy

Utwórz przy głównym pliku witryny Memcachetest.php i zainstaluj następujący kod

podłącz ("Localhost", 11211) lub Exit ("Nie można połączyć się z serwerem MemCached"); $ version \u003d $ memcache-\u003e getversion (); Echo "Wersja" Server "S:" $ wersja ".
n "; $ TMP_Object \u003d Nowy StdClass; $ TMP_Object-\u003e str_attr \u003d" Test "; $ TMP_Object-\u003e INT_ATTR \u003d 123; $ MemCache-\u003e Set (" Key ", $ TMP_Object, False, 10) lub Die (" To " Okazało się, aby pozostawić wpis w MemCached "); Echo" Dane zapisu do pamięci podręcznej MemCached (dane będą przechowywane przez 10 sekund)
n "; $ Get_result \u003d $ MemCache-\u003e Get (" Key "); Echo" Dane zapisane w MemCached:
n "; var_dump ($ get_result);?\u003e

Teraz pozostaje do sprawdzenia wyników: http://example.com/memCachetest.php
Jeśli wszystko jest zrobione poprawnie, zobaczysz coś złego

pHPMEMCACHEDADMIN - Monitorowanie, statystyki i MeMcached Management

phpmemCachedadmin to oprogramowanie, które zapewnia interfejs internetowy do monitorowania i zarządzania usługą MemCached na Linuksie. Umożliwia wizytę w statystykach w czasie rzeczywistym dla wszystkich obsługiwanych przez serwer obsługi: Get, Set, Usuń, przyrost, zmniejszenie, odzyskane, eksmisje, CAS, a także statystyki serwera: Sieć, pozycja, wersja robocza związana z wykresami i wewnętrznym serwerem konfiguracja.

Instalowanie i konfigurowanie PHPMemCachedadmin

Tutaj możesz przejść kilka sposobów: przydzielić oddzielną domenę lub subdomen do działania tej usługi. I możesz zrobić podkatalog na pulpicie i umieścić hasło do niego lub. Opiszę ostatni sposób zainstalowania hasła w folderze jako prostsze.

Powiedzmy, że mamy stronę HTTPS: //

CD / VAR / www / witryna

Utwórz katalog i idź do niego

MKDIR PHPMEMCACHEDADMIN && CD PHPMEMCACHEDHEDADMIN

Pobierz najnowszą wersję dystrybucji

Wget http://phpmemcaceadmin.googleCode.com/files/phpmemCachedadmin-1.2.2-2262.tar.gz.

Rozpakuj i usuń archiwum dystrybucją

TAR -XVZF PHPMEMCACHEDADMIN-1.2.2-R262.TAR.GZ && RM -RF PHPMEMCACHEDADMIN-1.2.2-R262.tar.gz

Rekurencyjnie wykazują odpowiednie prawa dostępu w bieżącym katalogu

Znajdź ./ -type f -exec chmod 0644 (); Znajdź ./ -type d -exc chmod 0755 ();

Authtype Basic Authname "Prywatny obszar" authuserfile .htpasswd wymagają użytkownika MemCachedManager

Create.htpasswd.

Htpasswd -c .htpasswd memcachedmanager

Wprowadź hasło.

To wszystko. Nazwa użytkownika do katalogu MemCachedManager, jeśli go nie zmieniłeś. Otwórz HTTPS: // Site / PhpmemCacheddmin (pieniądze domeny na własną rękę), wprowadź login / hasło i użyj

Wreszcie

Polecam zapoznanie się z artykułem o memcached. Ujawnia ogólne informacje o tym i niektórych subtelnościach pracy.
To wszystko. Jeśli coś jest niezrozumiałe, zadaj pytania w komentarzach

Dzisiaj przedstawiam ci mały fragment kodu, który nauczy cię wchodzić w interakcje z memCache. Aby zainstalować Mediatemple na hostingu, potrzebujesz danych dla SSH.

Kto używa MemCache?

MemCache został opracowany przez Dangę Interactive, aby zwiększyć prędkość portalu LiveJournal.com. MemCache zmniejsza czas pobierania z bazy danych do prawie do zera, z którego prędkość pobierania rośnie dla użytkowników, przyspieszone zarządzanie zasobami itp. W tej chwili Facebook jest największym użytkownikiem usługi MemCache. Biorąc pod uwagę liczbę osób przybywających na Facebooku codziennie, prawie nalał tę usługę - i dla nich przydzielało oddzielne miejsce.

Co to jest MemCache?

Cóż, stało się interesujące? MemCache jest uniwersalnym systemem dystrybucji elementów buforowanych. Jeśli w pamięci podręcznej nie ma nic, zapytanie jest wykonane do bazy danych, a wyniki są zapisywane w MemCache:

MemCache zapewnia 5 funkcji:

  • get () - Wyodrębnia wartość według klucza
  • ustaw () - Ustawia wartość
  • dodaj () - dodaje pamięć podręczną, jeśli nie istnieje
  • wymień () - zastępuje pamięć podręczną
  • flush () - Usuwa wszystkie powiększone dane

Kod

Jeśli zainstalowałeś MemCache, możesz zacząć ich używać. Jest opinia, że \u200b\u200bdużo pamięci podręcznej jest zły. Absolutnie nie zgadzam się z tym! Im szybsza witryna jest załadowana - tym lepiej!

  • Pierwsze dwie linie dokonują połączenia z MemCache.
  • Następnie następuje skrypt połączenia bazy danych.
  • Następnie utwórz klucz. Kiedy chcemy umieścić dane w programie MemCache, musimy przenieść 3 elementy, aby wstawić: kluczowy, wartości i życia pamięci podręcznej. Klucz jest konieczny do uzyskania dostępu do danych. W tym przykładzie można zobaczyć, co używam klucza MD5 zapytania.
  • Następnie sprawdzamy, czy jest pamięć podręczna. Sprawdź powróci do nas prawda lub fałsz. Jeśli on jest, otrzymujemy dostęp do niego.
  • Jeśli pamięć podręczna nie jest, połączamy się z bazą danych i uzyskać wartość. Aby utworzyć pamięć podręczną, używamy następującego wyrażenia: $ MemCache-\u003e Set ($ Key, $ Row, True, 20); $ Rzędu utrzymuje tablicę tego, co dostaliśmy się z bazy. 20 To jest żywotność w pamięci podręcznej w sekundach.

$ MemCache \u003d Nowy MemCache; $ MemCache-\u003e Connect ("127.0.0.1", 11211) lub Die ("Nie można się połączyć"); Obejmują ("Zawiera / Connect.php"); // Utwórz klucz, a następnie sprawdź pamięć podręczną $ \u003d MD5 ("Wybierz * z MemCached_Test, gdzie nazwa \u003d" Ashley "); $ Get_result \u003d $ MemCache\u003e Get ($ Key); Jeśli ($ Get_result) (Echo $ Get_result ["Nazwa"]; Echo $ Get_result ["Nazwa użytkownika"]; Echo "Dane wyciągane z pamięci podręcznej";) ELS (// Uzyskaj dane z bazy danych i utwórz gotówkę $ Query \u003d " Wybierz * Pamięć podręczna z MemCached_Test, gdzie nazwa \u003d "Ashley"; "$ Dess \u003d MySQL_Query ($ Query); $ Row \u003d MySQL_Fetch_array ($ Wynik); Print_R ($ Row); $ MemCache\u003e Set ($ Key, $ Row, prawda, 20); // Przechowuj wynik 20 sekund danych Echo "wyciągniętych z bazy danych";)

Jest to najłatwiejszy przykład korzystania z MemCache, ale mam nadzieję, że był dla ciebie dobry początek.

Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu