Php/memcachedメモ
提供: 初心者エンジニアの簡易メモ
目次
memcachedダウンロード
http://jehiah.cz/projects/memcached-win32/ からバイナリをダウンロード
memcachedのサービス登録
cd D:\memcached-1.2.1-win32 memcached.exe -d install
memcachedのサービス削除
memcached.exe -d uninstall
memcachedのサービス実行
memcached.exe -d start
memcachedスタートバッチ(以下をmemcached_start.batで保存
d: cd D:\memcached-1.2.1-win32 memcached.exe -d start
phpにmemcache導入
php.iniで以下追加
extension=php_memcache.dll
memcacheの.dllを以下からダウンロードし
http://museum.php.net/php5/pecl-5.2.6-Win32.zip D:\php-5.2.6\extへ入れapache再起動。
http://shikii.net/blog/downloads/php_memcache-cvs-20090703-5.3-VC6-x86.zip (php5.3時
memcacheサンプル
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\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)<br/>\n";
$get_result = $memcache->get('key');
echo "Data from the cache:<br/>\n";
var_dump($get_result);
?>
memcachedサンプル
$mc = new Memcached();
$mc->addServer("localhost", 11211);
$mc->set("foo", "Hello!");
$mc->set("bar", "Memcached...");
$arr = array(
$mc->get("foo"),
$mc->get("bar")
);
var_dump($arr);
sessionをmemcacheで使用
以下コードのみ設定し、普通にsessionを使えば、すぐ使える
ini_set('session.save_handler', 'memcache'); //これはmemcachedでなくmemcacheの方を使っている。
ini_set('session.save_path', 'tcp://localhost:11211');
memcacheをmemcachedで仕様
ini_set('session.save_handler', 'memcached'); //これはmemcacheでなくmemcachedの方を使っている。
ini_set('session.save_path', 'localhost:11211'); //こちらはtcp://がない
php8エラー対応
macの場合
警告がでて使えない。
Warning: session_start(): Unable to clear session lock record in Warning: session_start(): Failed to read session data: memcached (path: localhost:11211) in
対応方法
修正前
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', "localhost:11211");
修正後
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', "localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=2");
参考:https://www.php.net/manual/en/memcache.ini.php
rocky10でkyototycoonの場合=
警告がでて使えない。
Warning: session_start(): Failed to write session lock: getaddrinfo() or getnameinfo() HOSTNAME LOOKUP FAILURE Warning: session_start(): Failed to write session lock: SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY
対応方法
修正前
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', "localhost:11401?persistent=1&weight=1&timeout=1&retry_interval=15");
修正後
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', "tcp://localhost:11401?persistent=1&weight=1&timeout=1&retry_interval=15");
kyototycoonの相性なのかmemcacheを使う必要があった。
memcache管理ツール
http://livebookmark.net/memcachephp/memcachephp.zip
