php에서 일련의 행위를 atomic하게 만들어보려고 하는데요
글쓴이: imyaman / 작성시간: 화, 2013/05/14 - 3:49오후
안녕하세요. ^^
웹 브라우저에서 특정 URL에 요청을 하면,
서버에서 3개의 서로 다른 파일을 수정(이름을 바꾸거나 삭제)해야하는데,
이 3개의 파일 수정이 한꺼번에 이루어져야하는 상황입니다.
여러개의 클라이언트가 동시에 접속해서,
서로 영향을 주는 일이 없도록 하고 싶은데요,
대신, 먼저온 클라이언트 순서로 차례로 처리하려고 하고요.
예를 들면,
A라는 클라이언트와 B라는 클라이언트가 동시에 접속하여
A의 요청으로 인해 1, 2가 수정되고 3이 수정 완료되기 전까지
B의 요청으로 인해 1이 수정되는 경우를 막고 싶은 거죠.
검색을 해보니, php 에서 mutex을 이용하는 예시가 있던데, 이게 도움이 될까요?
https://github.com/krakjoe/pthreads/issues/105
좋은 방법이 있으면 좀 알려주세요.
도움 좀 부탁드립니다~
Forums:
싱글톤으로 해 보시지요?
mutex의 좀 파일업 데이트를 처리하는 클래스를 만드시고 그 클래스를 싱글톤으로 사용해 보세요.
Better object handling with PHP singleton
http://www.christianmontoya.com/2008/04/15/better-object-handling-with-php-singletons/
구현을 좀 더 간단하게 하시고 싶으시다면 스태틱으로 하셔도 동작은 동일합니다.
그리고 가능하시다면 파일에 직접 업데이트 하기 보다는 APC같은 메모리 캐쉬를 사용하신다면 성능면에서 좋을듯 합니다.
댓글 달기