php Flock 사용 예
bool flock ( resource $handle , int $operation [, int &$wouldblock ] )
flock()을 사용하면 모든 플랫폼(대부분의 Unix 파생 제품 및 Windows 포함)에서 사용할 수 있는 간단한 읽기/쓰기 모델을 구현할 수 있습니다.
PHP 5.3 이전. 2, 잠금은 fclose()(스크립트가 끝난 후 자동으로 호출됨)에 의해 해제되지만 이제는 수동으로 잠금을 해제해야 합니다
operation
1.LOCK_SH 공유 잠금 가져오기(읽기) 프로그램)
2.LOCK_EX 독점 잠금 받기(프로그램 작성)
3.LOCK_UN 잠금 해제(공유 또는 독점 여부)
4.LOCK_NB 무리할 때 차단하지 않음( )이 잠겨 있습니다
<?php
$file = 'test.txt';
$fp = fopen($file, 'w');
if(flock($fp, LOCK_EX)){ // 取得独占锁
fwrite($fp, "Hello World\r\n"); // 写入数据
sleep(10); // sleep 10秒,文件被锁定
fwrite($fp, "Hello PHP\r\n"); // 写入数据
flock($fp, LOCK_UN); // 解锁
}
fclose($fp);
?>
<?php $file = 'test.txt'; $fp = fopen($file, 'r'); if(flock($fp, LOCK_SH)){ // 取得贡献锁 while(!feof($fp)){ echo fread($fp, 100); } flock($fp, LOCK_UN); } fclose($fp); ?>
를 실행하면 a가 독점 잠금을 획득하고 b는 기다릴 수만 있으며 a가 실행되고 잠금이 해제된 후에만 b를 실행할 수 있습니다. blocking
예 2: A와 B 모두 차단 없이 공유 잠금을 사용합니다.
<?php $file = 'test.txt'; $fp = fopen($file, 'r'); if(flock($fp, LOCK_SH)){ // 取得共享锁 sleep(10); // sleep 10秒 while(!feof($fp)){ echo fread($fp, 100); } flock($fp, LOCK_UN); } fclose($fp); ?>
<?php $file = 'test.txt'; $fp = fopen($file, 'r'); if(flock($fp, LOCK_SH)){ // 取得共享锁 while(!feof($fp)){ echo fread($fp, 100); } flock($fp, LOCK_UN); } fclose($fp); ?>
b는 a가 실행될 때까지 기다리지 않고 파일 내용을 출력할 수 있습니다. .php를 먼저 실행한 다음 b.php를 실행합니다
b는 데이터를 쓰기 전에 a가 실행될 때까지 기다려야 합니다. Blocking
a.php
<?php $file = 'test.txt'; $fp = fopen($file, 'a'); if(flock($fp, LOCK_EX)){ // 取得独占锁 fwrite($fp, "Hello World\r\n"); // 写入数据 sleep(10); // sleep 10秒,文件被锁定 fwrite($fp, "Hello PHP\r\n"); // 写入数据 flock($fp, LOCK_UN); // 解锁 } fclose($fp); ?>
b.php
<?php $file = 'test.txt'; $fp = fopen($file, 'a'); if(flock($fp, LOCK_EX)){ // 取得独占锁 fwrite($fp, "How Are You\r\n"); // 写入数据 fwrite($fp, "Show Me The Money\r\n"); // 写入数据 flock($fp, LOCK_UN); // 解锁 } fclose($fp); ?>
먼저 a.php를 실행하고, 그다음 b.php를 실행
non-blocking
전용 잠금 LOCK_EX
을 사용하면 쓰기/읽기 모두 기다려야 합니다.LOCK_UN
, 공유/읽기 잠금을 사용하더라도 사용 후에는 잠금을 해제해야 합니다.
LOCK_NB은 잠겨 있으면 차단하지 않지만 잠금 메시지를 표시합니다. 이 글에서는 php Flock의 사용예를 설명하고 있습니다. 더 많은 관련 내용은 php 중국어 홈페이지를 참고해주세요.
관련 권장 사항:
php str_replace 지정된 시간을 바꾸는 방법에 대한 설명
header, headers_sent, headers_list, header_remove 사용 지침 정보
PDO 쿼리를 통해 mysql은 필드 정수를 반환합니다. 문자열 유형에 대한 변수 솔루션
위 내용은 PHP Flock 사용 예에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!