Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Или купить еще один сервер отдельно для мемкеша и выдать ему все 4 гб?
~$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 3596
STAT uptime 13155613
STAT time 1289943278
STAT version 1.2.2
STAT pointer_size 64
STAT rusage_user 4538.951666
STAT rusage_system 17874.005055
STAT curr_items 396108
STAT total_items 66974376
STAT bytes 56821023
STAT curr_connections 2
STAT total_connections 344903318
STAT connection_structures 50
STAT cmd_get 342354715
STAT cmd_set 66974376
STAT limit_maxbytes 67108864
STAT threads 1
ENDС моей точки зрения, применять кэширование стоит только на высоконагруженных ресурсах. Ведь каждый раз, подключаясь к серверу Memcached, вы тратите драгоценное время, что скорее всего не будет оправданным.
я опишу процесс установки из исходного кода, так как не все репозитории настолько богаты, как дебиановский.
#apt-get install memcached
Для начала, Вам хватит следующего конфига:
pecl download memcache... unpacking... compilling... вроде можно просто sudo pecl install memcache??? //Если в кэше нет объекта с ключом our_var, создадим его
//Объект our_var будет храниться 5 секунд и не будет сжат
$memcache_obj->set('our_var', date('G:i:s'), false, 5);
//Выведем закэшированные данные
echo $memcache_obj->get('our_var');
}$var_key =date('G:i:s');
$memcache_obj->set('our_var',$var_key , false, 5);
echo $var_key;
<?php
$memcache_obj = new Memcache;
$memcache_obj->connect('127.0.0.1', 11211);
$var_key = $memcache_obj->get('our_var');
if(empty($var_key)){
#если варкей не смогли найти в мемкеше, то генерируем его заново и попутно кладем в мемкеш
$var_key=date('G:i:s');
$memcache_obj->set('our_var',$var_key , false, 5);
}
echo $var_key;
$memcache_obj->close();
?>
<?php
if($var_key != $memcache_obj->get('our_var'))
<?php
$memcache_obj = new Memcache;
$memcache_obj->connect('127.0.0.1', 11211);
$var_key = $memcache_obj->get('our_var');
if(empty($var_key)){
#если варкей не смогли найти в мемкеше, то генерируем его заново и попутно кладем в мемкеш
$var_key=date('G:i:s');
$memcache_obj->set('our_var',$var_key , false, 5);
}
echo $var_key;
$memcache_obj->close();
?>
<?php
$memcache_obj = new Memcache;
$memcache_obj->connect('127.0.0.1', 11211);
if($var_key != $memcache_obj->get('our_var'))
{
$var_key=date('G:i:s');
$memcache_obj->set('our_var',$var_key , false, 5);
}
echo $var_key;
$memcache_obj->close();if(! ($var_key = $memcache_obj->get('our_var')) )seriy@seriy-desktop:~$ cat phpscript.php
<?php
$memcache_obj = new Memcache;
$memcache_obj->connect('127.0.0.1', 11211);
if($var_key !== $memcache_obj->get('our_var')){
#если варкей не смогли найти в мемкеше, то генерируем его заново и попутно кладем в мемкеш
$var_key=date('G:i:s');
$memcache_obj->set('our_var',$var_key , false, 5);
print "yes";
}
echo $var_key;
$memcache_obj->close();
?>
seriy@seriy-desktop:~$ php phpscript.php
PHP Notice: Undefined variable: var_key in /home/seriy/phpscript.php on line 4
PHP Stack trace:
PHP 1. {main}() /home/seriy/phpscript.php:0
yes22:33:23
seriy@seriy-desktop:~$ cat phpscript.php
<?php
$memcache_obj = new Memcache;
$memcache_obj->connect('127.0.0.1', 11211);
if(! ($var_key = $memcache_obj->get('our_var')) ){
#если варкей не смогли найти в мемкеше, то генерируем его заново и попутно кладем в мемкеш
$var_key=date('G:i:s');
$memcache_obj->set('our_var',$var_key , false, 5);
print "yes";
}
echo $var_key;
$memcache_obj->close();
?>
seriy@seriy-desktop:~$ php phpscript.php
yes22:34:14
PHP Notice: Undefined variable: var_key in /home/seriy/phpscript.php on line 4
if(!$var_key = $memcache_obj->get('our_var')){ if(empty($var_key)){ if($var_key === false){Returns the value stored in the cache or FALSE otherwise.
Другие процессы, видя «блокировку» на объекте, либо отдадут его старое значение
либо «подвиснут»
либо ответят клиенту «обратись через 5 секунд»
$memcache_obj->connect('127.0.0.1', 11211) $memcache_obj->connect('my-site.com', 11211);
Memcached и PHP ликбез