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't get the lock!"; } fclose($fp); ?>
fopen()
에 의해 생성되는 리소스
(리소스)입니다. $Operation: LOCK_SH
는 공유 잠금(읽기 프로그램)을 얻습니다. LOCK_EX
는 배타적 잠금을 획득합니다(프로그램 작성). LOCK_UN
은 flock()
을 원하지 않는 경우 잠금을 해제합니다. 차단은 LOCK_NB
입니다(Windows에서는 아직 지원되지 않음)
true
로(Windows에서는 지원되지 않음) 반환 값: 성공 시 true
, 실패 시 false
. 코드 예:
1. LOCK_EXexit.text内容:Write something here
<?php
$fp = fopen('exit.txt', 'r+');
/* Activate the LOCK_NB option on an LOCK_EX operation */
if(!flock($fp, LOCK_EX | LOCK_NB)) {
echo 'Unable to obtain lock';
exit(-1);
}
fclose($fp);
?>
2를 사용하세요. LOCK_NBrrreee를 사용하세요.
위 내용은 PHP의 Flock() 함수 분석(코드 예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!