>  기사  >  백엔드 개발  >  PHP에는 잠금 장치가 있나요?

PHP에는 잠금 장치가 있나요?

王林
王林원래의
2019-10-10 11:52:534053검색

PHP에는 잠금 장치가 있나요?

파일 잠금

이 유형의 잠금은 mysql, php-fpm과 같이 더 일반적입니다. 시작 후 나타납니다. pid 파일에는 프로세스 ID가 기록되며 이 파일이 파일 잠금입니다.

이 잠금을 사용하면 프로세스가 반복적으로 실행되는 것을 방지할 수 있습니다. 예를 들어 crontab을 사용할 경우 1분마다 하나의 작업이 실행되도록 제한되지만, 프로세스가 잠기면 이 프로세스가 1분 이상 실행될 수 있습니다. 충돌을 해결하는 데 사용되지 않으면 두 프로세스가 함께 실행되면 문제가 발생합니다.

PID 파일 잠금 사용의 또 다른 장점은 프로세스가 중지 또는 다시 시작 신호를 자체적으로 보내는 것이 편리하다는 것입니다. 예를 들어, php-fpm을 다시 시작하는 명령은 다음과 같습니다:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

USR2 신호를 pid 파일에 기록된 프로세스로 보냅니다. 신호는 프로세스 통신에 속하며 다른 장에서 설명합니다.

Mutex 잠금 및 읽기-쓰기 잠금

동기화 모듈의 Mutex:

# 🎜 🎜#Mutex는 상호 배제, 상호 배제의 합성어입니다. pecl을 사용하여 동기화 모듈을 설치하고 pecl install sync를 설치합니다. 문서의 SyncMutex에는 잠금 및 잠금 해제라는 두 가지 방법만 있습니다.

동기화 모듈의 읽기-쓰기 잠금:

SyncReaderWriter의 방법은 유사하며, readlock, readunlock, writelock, writeunlock은 쌍으로 나타날 수 있습니다.

동기화 모듈의 이벤트:

Golang의 Cond와 더 비슷한 느낌, wait() 블록, fire() 깨우기 이벤트 차단 프로세스의. Cond를 소개하는 좋은 기사가 있습니다. Cond는 고정된 잠금 사용법임을 알 수 있으며 SyncEvent도 마찬가지입니다. PHP 문서의 예에서는 fire() 메소드가 웹 애플리케이션에서 사용되는 것으로 보입니다.

동기화 모듈의 세마포:

SyncSemaphore 문서에 따르면 Mutex와 차이점은 Semaphore를 여러 사람이 사용할 수 있다는 것입니다. 시간 프로세스(또는 스레드) 및 Mutex는 한 번에 하나씩만 얻을 수 있습니다. 따라서 SyncSemaphore의 생성자에는 세마포어를 얻을 수 있는 프로세스 수를 지정하는 매개 변수가 있습니다.

추천 튜토리얼:

PHP 비디오 튜토리얼

위 내용은 PHP에는 잠금 장치가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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