>  기사  >  백엔드 개발  >  PHP의 Flock() 함수 분석(코드 예제 포함)

PHP의 Flock() 함수 분석(코드 예제 포함)

autoload
autoload원래의
2021-04-27 10:44:072790검색

PHP의 Flock() 함수 분석(코드 예제 포함)

PHP를 사용하는 동안 파일을 읽어야 하는 경우가 종종 있는데, 다른 프로세스가 파일을 읽고 수정하는 것을 방지하고 충돌을 피하기 위해 파일을 읽을 때 파일을 잠그고 나서 파일이 수정됩니다. 이 과정에서는 flock() 함수가 사용됩니다. 처음으로 block() 함수의 구문을 살펴보겠습니다. flock()函数,本文就带大家一起了解以下。首次,我们来看一看block()函数的语法:

flock( resource $handle, int $operation, int $wouldblock = ?)
  • $handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

  • $operation:LOCK_SH取得共享锁定(读取的程序)。LOCK_EX 取得独占锁定(写入的程序。LOCK_UN 释放锁定(无论共享或独占)。如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。

  • $wouldblock:如果锁定会堵塞的话(EWOULDBLOCK    错误码情况下),可选的第三个参数会被设置为 true。(Windows 上不支持) 

  • 返回值:成功时返回 true, 或者在失败时返回 false

    <?php
    $fp = fopen("exit.txt", "r+");
    if (flock($fp, LOCK_EX)) {  // 进行排它型锁定
        ftruncate($fp, 0);      // truncate file
        fwrite($fp, "Write something here");
        fflush($fp);            // flush output before releasing the lock
        flock($fp, LOCK_UN);    // 释放锁定
    } else {
        echo "Couldn&#39;t get the lock!";
    }
    fclose($fp);
    ?>

    • $handle: 파일 시스템 포인터, 예 일반적으로 fopen()에 의해 생성되는 리소스(리소스)입니다.
  • $Operation: LOCK_SH는 공유 잠금(읽기 프로그램)을 얻습니다. LOCK_EX는 배타적 잠금을 획득합니다(프로그램 작성). LOCK_UNflock()을 원하지 않는 경우 잠금을 해제합니다. 차단은 LOCK_NB입니다(Windows에서는 아직 지원되지 않음)

  • $wouldblock: 잠금이 차단되면(EWOULDBLOCK 오류 코드의 경우) 선택적 세 번째 매개변수가 차단됩니다. true로(Windows에서는 지원되지 않음)
  • 반환 값: 성공 시 true, 실패 시 false.

    코드 예:

    1. LOCK_EX

    exit.text内容:Write something here
    <?php
    $fp = fopen(&#39;exit.txt&#39;, &#39;r+&#39;);
    
    /* Activate the LOCK_NB option on an LOCK_EX operation */
    if(!flock($fp, LOCK_EX | LOCK_NB)) {
        echo &#39;Unable to obtain lock&#39;;
        exit(-1);
    }
    
    fclose($fp);
    
    
    ?>
    2를 사용하세요. LOCK_NBrrreee를 사용하세요.

    2021년 PHP 면접 질문 요약(컬렉션)🎜 🎜》 《🎜🎜php 비디오 튜토리얼🎜🎜》🎜🎜

위 내용은 PHP의 Flock() 함수 분석(코드 예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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