a.php 가 한가지 파일 (aaa.log) 를 열고 내용을 기록하는 내용을 가지고 있다면 과연 aaa.log 는 정상적으로 기록 될 수 잇을까요?
궁급합니다. 동시 접속자수가 무지 많아져서 a.php 가 아파치 내에서 동시에 여러개 수행된다면 한가지 파일에 작업하는 a.php 가 정상적으로 수행될 수 있는지 조언좀 해주세요...
exec를 이용해서 락에 관해서 해결을 하는 것은 어떨런지요?
exec를 통해서 shell을 실행시키고, shell 에서 리다이렉션을 통해서 aaa.log에 접근하면 어떨런지요? "문자열" >> aaa.log
로 하면 락에 대한 책임을 쉘이 책임져주지 않을까요?
저걸 php exec() 콜하면 될 듯 한데요..
a 로 여셨다면 가능합니다.^_^ append 모드
a 로 여셨다면
가능합니다.
^_^
append 모드는 ... 항상 끝에 쓰는 걸 보장해 주기 때문이죠..
perl의 경우에는 flock으로 lock을 걸어 주어야 합니다만...
perl의 경우에는 flock으로 lock을 걸어 주어야 합니다만...
http://kr.php.net/manual/en/function.flock.php
PHP에도 flock 함수가 있는 걸로 봐서 따로 파일 lock을 걸어주어야 되는 것 같군요.
거의 불가능
flock 을 걸어도 결국은 뻗습니다
중요한 데이터라면 DB 를 사용하시기 바랍니다
방법을 고민해 보면
exec를 이용해서 락에 관해서 해결을 하는 것은 어떨런지요?
exec를 통해서 shell을 실행시키고, shell 에서 리다이렉션을 통해서 aaa.log에 접근하면 어떨런지요?
"문자열" >> aaa.log
로 하면 락에 대한 책임을 쉘이 책임져주지 않을까요?
저걸 php exec() 콜하면 될 듯 한데요..
man open APPEND 모드 보시면 아시겠지만.NFS
man open
APPEND 모드 보시면 아시겠지만.
NFS 인 경우를 제외하고는 race condition 이 일어나지 않도록
보장합니다.
append 모드일 경우에는 flock 을 쓰실 필요가 없습니다..
php 의 함수 기반이 c 이므로
php 에서도 마찬가지 입니다...
댓글 달기