文件锁
这类锁比较罕见,比方 mysql, php-fpm 启动以后都邑有一个pid文件纪录了历程id,这个文件就是文件锁。
这个锁能够防备反复运转一个历程,比方在运用crontab时,限制每一分钟实行一个使命,但这个历程运转时候能够凌驾一分钟,假如不必历程锁处理争执的话两个历程一同实行就会有题目。
运用PID文件锁另有一个优点,轻易历程向本身发住手或许重启信号。比方重启php-fpm的敕令为:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
发送USR2信号给pid文件纪录的历程,信号属于历程通讯,会另开一个篇幅。
互斥锁和读写锁
sync模块中的Mutex:
Mutex是一个组合词,mutual exclusion。用pecl装置一下sync模块, pecl install sync。 文档中的SyncMutex只要两个要领,lock 和 unlock。
sync模块中的读写锁:
SyncReaderWriter的要领相似,readlock, readunlock, writelock, writeunlock成对涌现即可。
sync模块中的Event:
觉得和golang中的Cond比较像,wait()壅塞,fire()叫醒Event壅塞的一个历程。有一篇好文引见了Cond, 能够看出Cond就是锁的一种牢固用法,SyncEvent也一样。php文档中的例子显现,fire()要领貌似能够用在web运用中。
sync模块中的信号量:
SyncSemaphore文档中显现,它和Mutex的不同之处,在于Semaphore一次能够被多个历程(或线程)获得,而Mutex一次只能被一个获得。所以在SyncSemaphore的组织函数中,有一个参数指定信号量能够被若干历程获得。
引荐教程:PHP视频教程
以上就是PHP有锁吗的细致内容,更多请关注ki4网别的相干文章!