root@wl ~/src # wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz
root@wl ~/src # tar xvfz libevent-2.0.16-stable.tar.gz
root@wl ~/src # cd libevent-2.0.16-stable
root@wl ~/src/libevent-2.0.16-stable # ./configure
root@wl ~/src/libevent-2.0.16-stable # vi ./test/regress_dns.c
static void
cnt_free(void *ptr)
{
allocated_chunks -= 1;
free(ptr); // return 부분 삭제. 1668 번 줄이다.
}
root@wl ~/src/libevent-2.0.16-stable # make
root@wl ~/src/libevent-2.0.16-stable # make install
root@wl ~/src # wget http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz root@wl ~/src # tar xvfz memcached-1.4.10.tar.gz root@wl ~/src # cd memcached-1.4.10 root@wl ~/src/memcached-1.4.10 # ./configure root@wl ~/src/memcached-1.4.10 # make root@wl ~/src/memcached-1.4.10 # make install
root@wl ~/src # http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz root@wl ~/src # tar xvfz libmemcached-1.0.2.tar.gz root@wl ~/src # cd libmemcached-1.0.2 root@wl ~/src/libmemcached-1.0.2 # ./configure --with-memcached --disable-64bit --enable-umem ... --- Configuration summary for libmemcached version 1.0.2 * Installation prefix: /usr/local * System type: pc-solaris2.10 * Host CPU: i386 * C Compiler: gcc (GCC) 4.6.2 * Assertions enabled: yes * Debug enabled: no * Warnings as failure: no --- root@wl ~/src/libmemcached-1.0.2 # /usr/sfw/bin/gmake root@wl ~/src/libmemcached-1.0.2 # /usr/sfw/bin/gmake install
root@wl ~ # memcached -h 1) memcached 1.4.10 -p <num> TCP 포트 번호 (기본값: 11211) -U <num> UDP 포트 번호 (기본값: 11211, 0 인경우 사용안함) -s <file> UNIX 소켓 경로 (네트워크 지원 안함) -d 데몬으로 실행 -u <username> 전환할 사용자 이름(루트로 실행시) -m <num> 최대 메모리(MB단위, 기본값: 64) -c <num> 최대 접속 개수 (기본값: 1024) -P <file> PID 파일 저장 위치. -d 옵션 사용시 사용 -f <factor> 증가 팩터값. (기본값: 1.25) -n <bytes> 키+값+플래그 를 저장할 최소 단위(기본값: 48) -L large memory pages 사용(가능한경우) -t <num> 사용할 쓰레드 개수 (기본값: 4) ... root@wl ~ # memcached -u windy -d -m 64 -p 11211 -P /tmp/memcached.pid root@wl ~ # telnet localhost 11211 2) Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. stats settings STAT maxbytes 67108864 STAT maxconns 1024 STAT tcpport 11211 STAT udpport 11211 STAT inter NULL 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 num_threads_per_udp 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 STAT maxconns_fast no STAT hashpower_init 0 END Ctrl+] telnet> Ctrl+D Connection to localhost closed. root@wl ~ #1) 도움말. memcached는 별도의 설정 파일이 없다. 대형 사이트의 경우 도움말을 참조해 메모리 사용에 대한 최적화가 필요할 것이다.
root@wl ~/src # mkdir phpmemcache root@wl ~/src # cd phpmemcache root@wl ~/src/phpmemcache # /usr/local/php/bin/pecl download memcache root@wl ~/src/phpmemcache # tar xvf memcache-2.2.6.tar root@wl ~/src/phpmemcache # cd memcache-2.2.6 root@wl ~/src/phpmemcache/memcache-2.2.6 # /usr/local/php/bin/phpize root@wl ~/src/phpmemcache/memcache-2.2.6 # CFLAGS="-xc99" ./configure -with-php-config=/usr/local/php/bin/php-config root@wl ~/src/phpmemcache/memcache-2.2.6 # make root@wl ~/src/phpmemcache/memcache-2.2.6 # cp memcache.php /usr/local/php/lib/php root@wl ~/src/phpmemcache/memcache-2.2.6 # cp ./modules/memcache.so /usr/local/php/lib/php/extensionsphp.ini 를 수정해야 한다. 윈디하나의 솔라나라: SAMP의 [PHP 설정]를 참조해 extension_dir 을 설정하고 아래와 같이 extension 을 추가해야 한다.
root@wl ~ # vi /usr/local/php/lib/php.ini extension=memcache.so
root@wl ~ # vi /usr/local/php/lib/php.ini session.save_handler = memcache session.save_path = "127.0.0.1:11211"
memcache.phps | 다운로드 (534 바이트) |
<?php session_start(); ?>
<pre>
<?php
$presessdata = @$_SESSION["data"];
$_SESSION["data"] = @$_SESSION["data"] + 1;
$memcache = new Memcache;
$memcache->connect("localhost", 11211);
print_r($memcache->getStats());
$items = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
foreach ($items as $k => $v) {
$memcache->set($k, $v);
}
var_dump($memcache->get(array('key1', 'key3')));
var_dump($memcache->get('key2'));
var_dump($memcache->get('key4'));
?>
SESSION: <?php echo $_SESSION["data"]; ?>
</pre>
아래와 유사하게 출력되어야 한다.
Array
(
[pid] => 8939
[uptime] => 3254
[time] => 1325815801
[version] => 1.4.10
[libevent] => 2.0.16-stable
[pointer_size] => 32
[rusage_user] => 0.052669
[rusage_system] => 0.047385
[curr_connections] => 10
[total_connections] => 17
[connection_structures] => 11
[reserved_fds] => 20
[cmd_get] => 11
[cmd_set] => 9
[cmd_flush] => 0
[cmd_touch] => 0
[get_hits] => 9
[get_misses] => 2
[delete_misses] => 0
[delete_hits] => 0
[incr_misses] => 0
[incr_hits] => 0
[decr_misses] => 0
[decr_hits] => 0
[cas_misses] => 0
[cas_hits] => 0
[cas_badval] => 0
[touch_hits] => 0
[touch_misses] => 0
[auth_cmds] => 0
[auth_errors] => 0
[bytes_read] => 560
[bytes_written] => 3172
[limit_maxbytes] => 67108864
[accepting_conns] => 1
[listen_disabled_num] => 0
[threads] => 4
[conn_yields] => 0
[hash_power_level] => 16
[hash_bytes] => 262144
[hash_is_expanding] => 0
[expired_unfetched] => 0
[evicted_unfetched] => 0
[bytes] => 296
[curr_items] => 4
[total_items] => 9
[evictions] => 0
[reclaimed] => 1
)
array(2) {
["key1"]=>
string(6) "value1"
["key3"]=>
string(6) "value3"
}
string(6) "value2"
bool(false)
SESSION: 1
|
|
Copyright © 2004-2012 Jo HoSeok. All rights reserved. |