memcached, mamp und osx 10.6

memchache, osx and mamp

memcached ist ein cache-server zum allgemeinen hinterlegen und abholen von daten aus dem arbeitsspeicher. um ein projekt mit der verwendung von memcache lokal testen zu können suchte ich nach einer installations-anleitung und fand nate haugs artikel.

da ich mit mamp 1.9.4 und os x 10.6 arbeite wollte ich die zz aktuelle version von memcached (1.4.5) installieren und auch eine neuere version von libevent einsetzen. dazu musste die memcached.sh datei editiert werden (angepasste datei memcached.sh).

bei der installation des memcached-service hielt ich mich an die anleitung von nate hHaug. die kompilierung der memcached-extension funktionierte bei mir aber nicht. hier fand ich die lösung bez. die passende extension und legte diese im verzeichnis mamp/bin/php5.2/lib/php/extension/no-debug-non-zts-xy/.
um die extension zu aktivieren muss in der php.ini extension=memcache.so in die ;extensions section geschrieben werden => mamp starten und dann via “ablage”->”vorlage editieren” die passende ini-datei aufrufen und editieren.

test:

  • memcachetest.php mit folgendem inhalt erstellen:

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("could not connect");

$version = $memcache->getVersion();
echo "server's version: ".$version."
n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_object, false, 10) or die ("failed to save data at the server");
echo "store data in the cache (data will expire in 10 seconds)
n";

$get_result = $memcache->get('key');
echo "data from the cache:
n";

var_dump($get_result);

  • das php-file in einem in mamp erstellten host ablegen
  • im terminal den service starten: memcached (per default startet der service auf dem port 11211/anzeige aller parameter vom memcache-service: memcache -h )

beim aufruf der memcachedtest.php sollte folgende ausgabe erscheinen:

server's version: 1.2.8
store data in the cache (data will expire in 10 seconds)
data from the cache:

object(stdClass)[3]
public 'str_attr' => string 'test' (length=4)
public 'int_attr' => int 123