이 기사에서는 주로 PHP 파일 잠금 동시 작업에 대한 자세한 설명을 공유합니다. 기본값: PHP의 파일 작업 기능은 차단 상태가 아니지만 모든 사람에게 도움이 되기를 바랍니다.
조건:
스크립트 작업이 필요하고 다른 스크립트 작업을 차단해야 하는 경우 파일 잠금을 사용해야 합니다.
잠금 작업 과정:
먼저 잠금을 추가하고, 잠금이 성공적으로 추가되었는지 확인하고, 성공하면 다시 사용하세요!
잠금 유형:
읽기 잠금: s-Lock(공유 잠금) 공유 잠금, 읽기 작업 전에 잠금이 증가할 것으로 예상됩니다. 결과적으로 동시 읽기가 허용되고 추가 쓰기 작업이 차단됩니다.
쓰기 잠금: x-lock(배타적 잠금) 배타적 잠금, 배타적 잠금, 쓰기 작업 전에 잠금 유형을 추가해 보세요. 결과적으로 다른 스크립트는 읽거나 쓸 수 없습니다.
의도 잠금: 리소스를 작동하는 모든 스크립트는 파일 잠금을 사용하는 규칙(규칙)을 따릅니다.
Blocking: 이전 작업이 잠금 해제된 후 다음 파일 잠금 작업이 계속 실행될 수 있음을 의미합니다.
기능:
bool flock ( resource $handle , int $operation [, int &$wouldblock ] )
유형 매개변수($Operation
): < code>LOCK_SH 읽기 잠금 및 LOCK_EX
쓰기 잠금$operation
):LOCK_SH
读锁 和 LOCK_EX
写锁
例:
使用读锁:
使用写锁:
可以通过LOCK_NB来在锁定失败时,不阻塞:
<?php $fp = fopen('/tmp/lock.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);
解锁:在 PHP 5.3.2版本之前,锁也会被 fclose() 释放(在脚本结束后会自动调用),现在只能通过flock($fp,LOCK_UN)
手动解锁
默认的:PHP的文件操作函数,不是阻塞状态,而是自由操作状态。
条件:
当需要一个脚本操作而需要阻塞另外的脚本操作时,需要用到文件锁。
锁操作流程:
先加锁,检测锁是否加成功,如果成功再使用!
锁定类型:
读锁: s-Lock(share-lock)共享锁,读操作前,期望增加的锁定。导致,允许并发读,阻塞额外的写操作。
写锁: x-lock(exclusive-lock)排他锁,独占锁,写操作前,尝试添加的锁定类型。导致,其他脚本不能读也不能写。
意向锁:所有的操作资源的脚本都遵循一个约定来使用文件锁(约定)。
阻塞:指的是上一个操作执行完解锁之后,下一个对文件锁定的操作才能继续执行
函数:
bool flock ( resource $handle , int $operation [, int &$wouldblock ] )
类型参数($operation
):LOCK_SH
读锁 和 LOCK_EX
写锁
例:
使用读锁:
使用写锁:
可以通过LOCK_NB来在锁定失败时,不阻塞:
<?php $fp = fopen('/tmp/lock.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);
解锁:在 PHP 5.3.2版本之前,锁也会被 fclose() 释放(在脚本结束后会自动调用),现在只能通过flock($fp,LOCK_UN)
기본값: PHP의 파일 작업 기능은 차단 상태가 아니라 자유 작업 상태입니다.
조건: 스크립트 작업이 필요하고 다른 스크립트 작업을 차단해야 하는 경우 파일 잠금을 사용해야 합니다. 🎜🎜🎜🎜잠금 작업 과정: 🎜🎜🎜🎜먼저 잠금을 추가하고, 잠금이 성공적으로 추가되었는지 확인하고, 성공하면 다시 사용하세요! 🎜🎜🎜🎜잠금 유형: 🎜🎜🎜🎜읽기 잠금: s-Lock(공유 잠금) 공유 잠금, 읽기 작업 전에 잠금이 증가할 것으로 예상됩니다. 결과적으로 동시 읽기가 허용되고 추가 쓰기 작업이 차단됩니다. 🎜🎜🎜🎜쓰기 잠금: x-lock(배타적 잠금) 배타적 잠금, 배타적 잠금, 쓰기 작업 전에 잠금 유형을 추가해 보세요. 결과적으로 다른 스크립트는 읽거나 쓸 수 없습니다. 🎜🎜🎜🎜의도 잠금: 리소스를 작동하는 모든 스크립트는 파일 잠금을 사용하는 규칙(규칙)을 따릅니다. 🎜🎜🎜🎜🎜Blocking: 이전 작업이 잠금 해제된 후 다음 파일 잠금 작업이 계속 실행될 수 있음을 의미합니다.🎜🎜🎜기능: 🎜rrreee🎜유형 매개변수($Operation
): LOCK_SH 읽기 잠금 및 LOCK_EX
쓰기 잠금🎜🎜예: flock($fp)을 통해서만 해제할 수 있습니다. ,LOCK_UN)
수동 잠금 해제. 🎜🎜관련 권장 사항: 🎜🎜🎜PHP는 높은 동시성 문제를 해결하기 위해 파일 잠금을 어떻게 사용합니까?위 내용은 PHP 파일 잠금 동시성 작업에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!