2018년 5월 15일 화요일

[PHP예제] 104 파일 처리의 흐름



  • 파일 열기(모드 지정: 읽기 / 쓰기)
    • fopen() 함수의 제1인수에는 파일명을, 제2인수에는 '읽기/쓰기' 모드를 지정하고 파일을 연다
모드 읽기/쓰기 파일이 없는 경우 파일이 있는 경우 파일 포인터
r 읽기만 오류 열기 맨 앞
r+ 읽기/쓰기 오류 열기 맨 앞
w 쓰기만 새로 작성 파일 크기를 0으로 지정하고 열기 맨 앞
w+ 쓰기/읽기 새로 작성 파일 크기를 0으로 지정하고 열기 맨 앞
a 쓰기만 새로 작성 열기 맨 앞
a+ 쓰기/읽기 새로 작성 열기 맨 앞
x 쓰기만 새로 작성 오류 맨 앞
x+ 쓰기/읽기 새로 작성 오류 맨 앞
c 쓰기만 새로 작성 열기 맨 앞
c+ 쓰기/읽기 새로 작성 열기 맨 앞


  • 파일 잠금
    • 파일을 이용하는 경우에 동시에 액세스 되는 것을 고려해서 읽거올 때 다른 사람이 기록하지 않도록 해야한다.
    • fopen() 함수에서 파일을 열고 flock() 함수를 사용하여 공유 잠금 또는 독점 잠금을 진행한다.
제1인수의 설정값 기능
LOCK_SH  공유 잠금(독점 잠금만 차단 -> 쓰기만 차단)
LOCK_EX  독점 잠금(다른 잠금을 모두 차단 -> 읽기/쓰기 모두 차단)
LOCK_UN  잠금 해제
LOCK_NB  잠겨있는 경우 false를 반환(Windows는 지원 안함)



  • 파일 읽기/쓰기
    • 파일의 읽기 쓰기를 다루는 함수
    • 읽기
      • fgets() - 한줄을 가져옴
      • fgetc() - 한 개의 문자를 가져옴
      • fgetcsv() - CSV 형식의 파일에서 한 줄을 가져오고 배열에 저장
      • fgetss() - HTML 태그를 제거하고 한 줄을 가져옴
      • fread() - 바이너리 안전(binary-safe) 읽기
      • fscanf() - 포맷을 근거로 해서 파일에서의 입력을 처리
    • 쓰기
      • fwrite() - 바이너리 안전(binary-safe) 쓰기
      • fputs() - fwrite() 함수의 별칭(alias)
      • fflush() - 버퍼링된 출력을 비움
      • fputcsv() - 행을 CSV 형식으로 씀(PHP 5.1이상)
      • fpassthru() - 모든 데이터를 출력
    • 파일 포인터
      • ftell() - 현재 위치를 확인함
      • rewind() - 맨 앞으로 되돌림
      • fseek() - 이동함
      • feof() - 끝에 도달했는지 확인
  • 파일 닫기
    • fclose() 함수를 사용하여 파일을 닫음

  • 다른 방법으로 파일 다루기
    • fopen() 함수에서 명시적으로 파일을 열지 않아도 파일의 읽기와 쓰기가 가능한 함수가 있음
      • file() - 파일 전체를 읽고 배열에 저장함
      • file_get_contents() - 파일의 내용을 모두 읽어 문자열로 가져옴
      • file_put_contents() - 파일에 문자열을 입력함, 제3인수로 추가 기록/독점 잠금 등을 지정할 수 있음
      • readfile() - 파일을 표준 출력함





댓글 없음:

댓글 쓰기