>  기사  >  백엔드 개발  >  PHP 파일 기본 작업 예제 공유

PHP 파일 기본 작업 예제 공유

小云云
小云云원래의
2018-03-20 13:27:151113검색


이 기사는 주로 PHP 파일의 기본 작업 예제를 공유합니다. 먼저 PHP 파일을 읽고 쓰는 기본 작업을 공유하겠습니다.

읽기 및 쓰기의 기본 작업

  • Write 파일 함수: file_put_contents()

    • FILE_USE_INCLUDE_PATH: 파일 이름 복사본의 내장 경로를 확인합니다

    • LOCK_EX: 파일

    • FILE_APPEND : 파일의 끝으로 이동합니다. 그렇지 않으면 파일 내용이 지워집니다.

    • 구문:

      int file_put_contents(file,data,mode,context)int file_put_contents(file,data,mode,context)

      参数 描述
      file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
      data 可选。规定要写入文件的数据。可以是字符串、一维数组或数据流。
      mode 可选。如何打开/写入文件。可能值:FILE_USE_INCLUDE_PATH 、 FILE_APPEND 、 LOCK_EX
      context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 null,则忽略。
    • 返回值:该函数将返回写入到文件内数据的字节数。

    • mode参数说明

    • 与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

  • 读文件函数:file_get_contents()

    • 语法:

      string file_put_contents(path,include_path,context,start,max_length)

      ParametersDescription파일 필수입니다. 데이터를 쓸 파일을 지정합니다. 파일이 없으면 새 파일이 생성됩니다. data선택사항. 파일에 기록할 데이터를 지정합니다. 문자열, 1차원 배열 또는 데이터 스트림일 수 있습니다. 모드선택사항. 파일을 열고 쓰는 방법. 가능한 값: FILE_USE_INCLUDE_PATH, FILE_APPEND, LOCK_EXcontext선택 사항. 파일 핸들의 환경을 지정합니다. context는 스트림의 동작을 수정할 수 있는 옵션 집합입니다. null이 사용되면 무시됩니다.
      반환 값: 이 함수는 파일에 기록된 데이터의 바이트 수를 반환합니다.
      mode 매개변수 설명 🎜🎜🎜🎜🎜 fopen(), fwrite(), fclose()를 순차적으로 호출하는 것과 동일한 기능을 갖습니다. 🎜🎜
    🎜🎜파일 읽기 함수: file_get_contents()🎜🎜🎜🎜🎜 구문: 🎜🎜string file_put_contents(path,include_path,context,start,max_length)🎜🎜🎜🎜🎜매개변수 🎜🎜Description🎜🎜🎜🎜🎜🎜path🎜🎜필수입니다. 읽을 파일을 지정합니다. 외부 URL🎜🎜🎜🎜include_path🎜🎜선택사항일 수 있습니다. include_path에서도 파일을 검색하려면 이 매개변수를 "1"로 설정하면 됩니다. 🎜🎜🎜🎜context🎜🎜선택사항. 파일 핸들의 환경을 지정합니다. 🎜🎜🎜🎜시작🎜🎜선택사항. 읽기를 시작할 파일의 위치를 ​​지정합니다. 이 매개변수는 PHP 5.1의 새로운 기능입니다. 🎜🎜🎜🎜max_length🎜🎜선택사항. 읽을 바이트 수를 지정합니다. 이 매개변수는 PHP 5.1의 새로운 기능입니다. 🎜🎜🎜🎜
  • 반환 값: 읽은 문자열.

기타 일반적으로 사용되는 파일 기능

  • Unlink() 파일 삭제

  • Rename() 파일 이동(이름 바꾸기)

  • Filesize() 파일 크기

  • File_exists() 파일 여부 존재합니다

  • Filemtime() 파일의 마지막 수정 시간입니다!

파일 핸들 읽기 및 쓰기 작업

대부분의 파일 읽기 및 쓰기는 File_put_contents, file_get_contents 함수를 사용하여 완료됩니다.
어떤 경우, 특별한 경우에는 위의 두 가지 기능을 사용하기가 쉽지 않습니다.
일반적으로 파일이 너무 큽니다! 부분적으로만 조작이 가능해요!
기본 단위는 바이트입니다.

  • fopen() 함수는 파일이나 URL을 엽니다.

    열기에 실패하면 이 함수는 FALSE를 반환합니다.
    열린 파일 핸들, PHP 프로그램과 파일 간의 데이터 경로!
    파일 주소와 열기 모드라는 두 가지 매개변수가 필요합니다!

    열기 모드: 파일을 연 후 수행해야 할 작업을 지정하세요! 다음 모드를 선택할 수 있습니다:

    • r: 읽기, 읽기 모드.

    • w: 쓰기, 쓰기 작업, 쓰기 지우기.

    • a: 추가, 쓰기 작업, 추가 쓰기.

    • x: 새로운 글쓰기는 작업을 위한 새로운 파일만 생성할 수 있습니다! w

    • + 확장 모드와 유사한 쓰기 작업입니다. 확장 작업은 읽기 및 쓰기 작업을 완료할 수 있습니다.

      a033f09b1a547cc02045060a89d4ed93
  • 파일 핸들 읽기 함수 fread(),fgetc(),fgets(),feof();

    • One byte data = fgetc(handle); 바이트 문자
      한 바이트를 읽을 때마다 파일 포인터를 한 바이트 앞으로 이동하세요! 핸들 작업에서는 파일 포인터에 따라 다릅니다!

    • String = fgets(handle, length)
      읽을 때 개행 문자를 먼저 읽으면 역시 종료됩니다. 줄 읽기 기능이라고도 합니다! 일반적인 논리에서는 각 행에 일련의 정보가 기록되며 이 기능이 가장 일반적으로 사용됩니다!

    • feof()는 파일의 끝에 도달했는지 여부를 결정합니다.
      파일의 모든 정보를 읽습니다. 예:

      <?php
          $handle = fopen(&#39;./langref.txt&#39;,&#39;r&#39;);
          while (! feof($handle)) {
              $line = fgets($handle,1024);
              echo $line . "</br>";
          }
      ?>
    • String = fread(handle, length)
      길이에 따라 내용을 읽습니다. fgets와 다르며 개행 문자의 영향을 받지 않습니다 제한
      유일한 제한은 최대 길이가 8192를 초과할 수 없다는 것입니다!

  • 파일 핸들 쓰기 함수 fwrite($handle, content)

  • Close 핸들 fclose($handle )

  • 포인터 연산 기능

    • fseek(핸들, 위치), 위치 설정 포인터, 위치는 0부터 시작해서 증가!

    • ftell(handle), 포인터 위치를 얻으세요!

파일 동시 작업(파일 잠금)

PHP의 파일 작업 기능은 기본적으로 차단 상태가 아닙니다. 무료 운영 상태. 따라서 파일을 동시에 작업할 때 오류가 발생하기 쉽습니다. 하나의 스크립트 작업이 다른 스크립트 작업을 차단해야 하는 경우 파일 잠금을 사용해야 합니다.

잠금 작업 과정:
먼저 잠금을 추가하고, 잠금이 성공적으로 추가되었는지 확인하고, 성공하면 다시 사용하세요!

잠금 유형:

  • 읽기 잠금: s-lock(공유 잠금) 공유 잠금, 읽기 작업 전에 예상되는 추가 잠금입니다. 결과적으로 동시 읽기가 허용되고 추가 쓰기 작업이 차단됩니다.

  • 쓰기 잠금: x-lock(배타적 잠금) 배타적 잠금, 배타적 잠금, 쓰기 작업 전에 잠금 유형을 추가해 보세요. 결과적으로 다른 스크립트는 읽거나 쓸 수 없습니다.

  • 의도 잠금: 리소스를 작동하는 모든 스크립트는 파일 잠금을 사용하는 규칙(규칙)을 따릅니다.

flock($handle, lock type);
Type:

  • LOCK_SH 읽기 잠금

  • LOCK_EX 쓰기 잠금

  • LOCK_UN에 의해 ​​잠금 해제됨

    <?php
        //*********脚本1,想要读取文件信息***********
        //尝试加读锁
        $lock_result= flock($handle, LOCK_SH);
        //判断锁定结果
        if(!$lock_result){
            die(&#39;锁定失败,不能操作文件&#39;);
        }
        //文件操作
        $str = fgets($handle, 1024);
        var_dump($str);
    
        sleep(5);
        echo &#39;<br>&#39;;
        $str = fgets($handle, 1024);
        var_dump($str);
        flock($handle, LOCK_UN);//解锁
    ?>
    
    <?php
        //*********脚本2,想要往文件里写入信息***********
        //尝试加写锁
        $lock_result= flock($handle, LOCK_EX);
        //判断锁定结果
        if(!$lock_result){
            die(&#39;锁定失败,不能操作文件&#39;);
        }
        //文件操作
        $result = fwrite($handle, &#39;123456&#39;);
        flock($handle, LOCK_UN);//解锁
    ?>

    위의 스크립트 2가 기다려야 하는 경우 (B 잠긴 상태) 스크립트 1은 완료될 때까지 실행되지 않습니다. 잠금이 성공적으로 추가되었는지 판단해야 함을 강조합니다.

    잠금이 실패할 때 차단하지 않으려면

    $lock_result = flock($handle, LOCK_EX | LOCK_NB);

Unlock:

  • Flock($handle, LOCK_UN)을 사용하면 강제 잠금 해제되고,

  • Fclose()를 사용하면 자동으로 잠금이 해제됩니다!

관련 추천:

PHP 파일 작업 예제 공유

php 파일 업로드 기본 소개

php 파일 업로드 간단한 예제 공유

위 내용은 PHP 파일 기본 작업 예제 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.