웹마스터 팁
PHP 뮤텍스 락 설치법(redis 활용)
2018.09.11 10:36
지난번 PHP 뮤텍스 락 설치법(memcached 활용) 을 공유드렸습니다.
사용하면서 memcached 가 안좋은 면이 발견되어 redis 로 전환하였습니다.
* 문제 : 커맨드 라인에서 인터럽트 시 memcached 재기동하기 전까지 해당 세션은 락을 계속 갖고 있는 문제 (웹브라우저 인터럽트 시에는 문제 없었으나 동일현상이 웹브라우저에서 발생할 여지가 완전히 없는 것인지 불확실)
* 대체 : redis 를 활용할 경우 위 문제 해결 (인터럽트 시 지정한 겟 락 허용 시간 초과 시 락 릴리즈 확인)
<설치과정>
1. redis 설치
(참고) https://www.lesstif.com/pages/viewpage.action?pageId=23757257
# yum install redis
# chkconfig redis on
# service redis start
2. redis 설치 후 동작 확인
# redis-cli ping
PONG <= 이라고 뜨면 정상 작동 중
3. php - redis 연동 설치
(참고) https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=81804
# wget https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip
# unzip phpredis.zip
# cd phpredis-phpredis-.../ <= 생성된 디렉토리로 이동
# phpize
# ./configure --with-php-config=/usr/bin/php-config <= php-config 위치를 기입
# make
# make install
=> 출력되는 위치 확인해 두세요. (redis 모듈 위치)
# vi /etc/php.ini
--------------------
[redis]
extension=/.../redis.so <= 위 make install 에서 확인된 redis 모듈 경로를 기입하세요.
session.save_handler = redis <= 기존 session.save_handler 가 활성화 되어 잇다면 주석
session.save_path = "tcp://127.0.0.1:6379" <= 기존 session.save_path 가 활성화 되어 잇다면 주석
--------------------
# service httpd restart <= 아파치 재시작
4. redis mutex 설치
(참고) https://github.com/php-lock/lock#phpredismutex
설치는 위 참고 사이트 참조하여 설치해 주세요.
5. 테스트
<?
require '위 4항 설치경로/vendor/autoload.php';
use malkusch\lock;
use malkusch\lock\mutex\PHPRedisMutex;
$redis = new Redis();
$redis->connect("localhost");
$mutex = new PHPRedisMutex([$redis], "balance", 30); // <= (redis API 객체, 키, 타임아웃)
$para1 = "";
$mutex->synchronized(function () use ($para1) { // <= 경합 진입
echo "겟 락";
sleep(10);
}); // <= 경합 탈출
echo "락 릴리즈";
?>
- 두 곳의 터미널에서 위 파일을 실행하면 경합이 정상적으로 이루어지는 것을 확인할 수 있습니다.
- 락을 잡고 있는 상태에서 인터럽트 발생 시 지정한 시간 이후 자동 락 릴리즈가 되는 것을 확인할 수 있습니다.
지금까지 redis 를 활용한 뮤텍스 포스팅 이었습니다.
댓글 0
제목 | 글쓴이 | 날짜 |
---|---|---|
서브 메뉴 배경색 바꾸기 [4] | Chang-Jo(창조) | 2007.08.17 |
위지웍 에디터 웹폰트 사용하기 [6] | 최지연 | 2007.08.17 |
사이트접속시 제로보드XE폴더로 이동되게 하는 쉬운방법 [8] | 부찬™ | 2007.08.17 |
리눅스에서 제로보드 xe를 위한 환경 구축하기 [6] | 써니a | 2007.08.18 |
404 페이지 못찾음으로 나오는 문제 수정 [9] | 화니군 | 2007.08.18 |
한글 경로가 404 에러로 뜨는 경우 처리방법 [2] | 베니 | 2007.08.18 |
본문 하단에 (애드센스)광고 넣기 [2] | roresy | 2007.08.19 |
각 메뉴 옆에 게시물 갯수 표시하기 [6] | coolsushi | 2007.08.19 |
게시판에 나타나는 이름을 실명으로 나타내자! [5] | 박영주964 | 2007.08.19 |
OpenID 적용 [6] | 맑은하늘75 | 2007.08.20 |
(수정) ZBXE 설치/로그인 등이 안될 때 시도해보세요. (MySQL DB) | 핑크플로이드 | 2007.08.20 |
페이지 수정시 메뉴들 가지런히 놓이게 하기 [3] | 팔공산 | 2007.08.21 |
layout skin 제작시 info.xml도 잘 보세요 [1] | 바람처럼.. | 2007.08.21 |
zbxe 일주일 사용기 및 팁 [1] | 팔공산 | 2007.08.21 |
홈페이지 주소 고정시키기 [12] | :에반: | 2007.08.21 |
로고 위치 변경하기 [4] | 김영훈715 | 2007.08.21 |
설치환경을 갖추어도 설치시 문제 [1] | 하얀후니 | 2007.08.22 |
rewrite mod 설정, 해지 [1] | 아름드리479 | 2007.08.22 |
(회원가입) 닉네임 필요없이 이름만 입력 받으려면 [16] | Simulz | 2007.08.22 |
Zbxe 서버 이전하기 [4] | 팔공산 | 2007.08.22 |