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.