q4561231 发表于 2018-12-14 10:09:28

php多进程读写同一个文件锁的问题

  PHP是原生支持多进程编程的,可以利用pcntl_fork()在当前位置产生一个子进程,那么就可能存在多个进程读写同一个文件的问题,比如多进程程序读写同一个日志文件,这样就有必要解决读写同一个文件时加锁的问题,php已经内置了一个读写的文件锁方法flock,,官方的解释是轻便的文件咨询锁定,这很官方。
  还是先看一个栗子吧:
   view plain copy 在CODE上查看代码片派生到我的代码片

[*]  
  flock的第一个参数是一个文件句柄,第二个参数可以设置锁定方式,有几个常量可以设置,下面一一介绍。
  LOCK_SH : 取得共享锁定(读取的程序)也就是常说的共享锁,该进程只能读不能写,其他进程还是能读取该文件的。
  LOCK_EX:取得独占锁定(写入的程序)常说的独占锁,该进程能读写该文件,其他进程则不能读写。
  LOCK_UN:释放锁定(无论共享或独占)也就是释放上述两种锁。
  LOCK_NB:配合LOCK_SH和LOCK_EX使用,使得在加锁时程序非阻塞。

页: [1]
查看完整版本: php多进程读写同一个文件锁的问题