Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- codeigniter
- 공모주 청약 일정
- MYSQL
- IPO
- 7월 공모주 청약 일정
- Stock
- Stock ipo
- 자바
- Eclipse
- 맥
- 제이쿼리
- SQL
- 오라클
- 공모주
- Oracle
- php
- 주식 청약
- html
- 주식 청약 일정
- 코드이그나이터
- java
- 주식
- 공모주 청약
- linux
- 리눅스
- css
- jquery
- 자바스크립트
- JavaScript
- 6월 공모주 청약 일정
Archives
- Today
- Total
개발자의 끄적끄적
[php] 파일 락 걸기 본문
728x90
반응형
[php] 파일 락 걸기
1 2 |
boolean flock(resource fp, int operation[, int &wouldblock]) // wouldblock : 락을 얻는 과정에서 현재 프로세스가 멈출 수도 있는지 |
operation의미
LOCK_SH (1) | 읽기 락. 파일 공유 가능. |
LOCK_EX (2) | 쓰기 락. 파일 공유 불가능. |
LOCK_UN (3) | 락 해제. |
LOCK_NB (4) | 락을 걸기 위해 스크립트가 정지하는 것을 막는다. |
락을 사용하려면 모든 스크립트에서 flock을 사용해야 한다. 그렇지 않으면 큰 의미가 없어진다.
NFS나 다른 네트워크 파일 시스템 또는 FAT과 같이 오래된 파일 시스템에서는 사용할 수 없다.
다중 쓰레드 서버 API를 사용하고 있다면 제대로 동작하지 않을 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 쓰기 과정 $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab'); flock($fp, LOCK_EX); // 쓰기 락 fwrite($fp, $outputstring); flock($fp, LOCK_UN); // 락 해제 fclose($fp);
// 읽기 과정 $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'r'); flock($fp, LOCK_SH); // 읽기 락 // 파일에서 읽는다. flock($fp, LOCK_UN); // 락 해제 fclose($fp); |
하지만 여전히 문제점이 있다. 같은 시간에 락을 걸려고 하면 어떻게 될까? 두 스크립트는 서로 경쟁하여 그 둘 중 어느 스크립트가 락을 얻을지 알 수 없고, 또 다른 문제가 발생한다. 이 문제는 DBMS를 사용하면 해결할 수 있다.
반응형
'개발 > php' 카테고리의 다른 글
[codeigniter] 코드이그나이터 join 사용법 (0) | 2020.01.29 |
---|---|
[php] 첨부파일 다운로드시 한글 깨짐 현상 (0) | 2020.01.21 |
[php] filesize() 파일의 크기 확인 (0) | 2020.01.20 |
[php] file_exists() 파일 존재 여부 확인 (0) | 2020.01.19 |
[php] fwrite 파일쓰기 (0) | 2020.01.19 |
Comments