Memcache - instalacja usługi i rozszerzeń PHP pod XAMPP (Mac OS X Leopard)



Każdy komu przyszło w udziale tworzenie serwisu o dużej oglądalności wie czym jest memcached, kto jeszcze nie wie, temu dedykuję ten post.

Memcached do system pamięci podręcznej. Stworzony w 2003 roku dla LiveJournal przez Danga Interactive. Z powodu swojej wysokiej wydajności, skalowalności i banalnej implementacji stał się powszechnie używany. Dowodem na to są giganci, którzy go używają, m.in. Facebook, YouTube, Wikipedia i wielu innych.

Pamiętać jednak należy, że mimo swoich zalet jest to nadal system pamięci podręcznej, a więc ulotnej. Nie można go traktować jak trwałego systemu składowania danych.

Najczęstszym zastosowaniem memcached jest cache danych z bazy, cache widoku (np. w smarty) czy handler sesyjny.
 
 

Instalacja usługi

 

Memcached początkowo dostępny był jedynie pod Linuksa, obecnie działa w większości systemów. Ja opiszę w jaki sposób zainstalować go na Mac OS X Leopard Snow.


1. Zakładam, że skoro czytasz tego posta to jesteś deweloperem i masz zainstalowany Xcode Tools, jeżeli nie to zrób to, bo będzie potrzebny kompilator (gcc). Wymagany jest również przez instalator macports. Xcode można pobrać z Apple Developer Center.

2. Źródła memcached dostępne są w projekcie MacPorts. Jeżeli jeszcze nie masz go zainstalowanego zrób to. Instalator znajdziesz tutaj.

3. Znajdź i zainstaluj źródła memcached

$ sudo port search memcached
memcached @1.4.5 (sysutils)
   A high performance, distributed memory object caching system.
 
$ sudo port install memcached

Memcached wymaga róweniż instalacji libevent, jeżeli w Twoim systemie jeszcze go nie ma instalator macports poradzi sobie sam.

4. Uruchom memcached

$ memcached -d -m 32 -l 127.0.0.1 -p 11211 &

Gotowe. Memcached działa jako usługa, może wykorzystać max 32 MB ramu, słucha lokalnie na porcie 11211. 

5. Pozostaje jeszcze sprawdzić czy działa:

$ echo "stats settings" | nc localhost 11211
STAT maxbytes 33554432
STAT maxconns 1024
STAT tcpport 11211
STAT udpport 11211
STAT inter 127.0.0.1
STAT verbosity 0
STAT oldest 0
STAT evictions on
STAT domain_socket NULL
STAT umask 700
STAT growth_factor 1.25
STAT chunk_size 48
STAT num_threads 4
STAT stat_key_prefix :
STAT detail_enabled no
STAT reqs_per_event 20
STAT cas_enabled yes
STAT tcp_backlog 1024
STAT binding_protocol auto-negotiate
STAT auth_enabled_sasl no
STAT item_size_max 1048576
END
 
U mnie działa :)

 

Instalacja rozszerzenia PHP (memcache.so)

 

Standardowa paczka XAMPP nie zawiera tego rozszerzenia i kod:

<?php
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);


spowoduje błąd:

Fatal error: Class 'Memcache' not found in ....

1. Pobierz źródła z repozytorium PECL (http://pecl.php.net/package/memcache)

2. Rozpakuj paczkę

$ gunzip memcache-2.2.5.tgz
$ tar -xvf memcache-2.2.5.tar

3. Przygotuj środowisko do kompilacji

$ phpize

Jeżeli dostajesz błąd: 

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

Oznacza to, że nie masz autoconf'a więc brakuje Ci Xcode.

4. Ustaw flagi dla kompilatora

$ export "CFLAGS=-arch i386"

5. Skompiluj kod

$ ./configure
$ make


6. Przenieś skompilowaną bibliotekę do katalogu z rozszerzeniami PHP.

Jeżeli nie wiesz do jakiego katalogu, sprawdź w phpinfo:

$php -i | grep extension_dir

U mnie wygląda to tak:

$ sudo cp memcache.so /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/


7. Uruchom bibliotekę w php.ini dopisując linijkę:

extension=memcache.so

8. Apache restart i gotowe!

 

Jeżeli dostajesz błąd:

PHP Warning:  PHP Startup: Unable to load dynamic library '/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/memcache.so' - dlopen(/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/memcache.so, 9): no suitable image found.  
Did find: /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/memcache.so: mach-o, but wrong architecture in Unknown on line 0

To znaczy, że źle ustawiłeś flagę architektury procesora. Wróć do punktu 4.

Powodzenia!

 
 

 



Proszę czekać...
Nie możesz komentować. Bartosz Stasiurka umieścił Cię na czarnej liście lub Twoje konto nie jest aktywne.

zamknij

zgłoś nadużycie

Zgłoszenie zostało zapisane.

Wystąpił błąd. Spróbuj ponownie później.

Zamknij

Dodaj do listy zablokowanych

Czy na pewno chcesz zablokować tego użytkownika?

 


zamknij

Logowanie

Jeżeli nie chcesz zakładać bloga, a jedynie brać udział w dyskusjach załóż konto podstawowe.

zamknij