由于 flock() 需要一个文件指针,因此可能不得不用一个特殊的锁定文件来保护打算通过写模式打开的文件的访问(在 fopen() 函数中加入 \\\"w\\\" 或 \\\"w+\\\"),实例代码如下:

  1. fp = fopen("test.txt"'ab');              //from the end 
  2. flock($fp, lock_ex);                        //lock the file for waiting... 
  3. fwrite($fp'just a test string.......');   //start writing... 
  4. flock($fp, lock_un);                        //release write lock  
  5. fclose($fp);                                //close the file读操作: 
  6. //read 
  7. $fp = fopen("test.txt"'r'); 
  8. flock($fp, lock_sh); 
  9. //read from the file....... 
  10. flock($fp, lock_un); 
  11. <?php 
  12. $fp = fopen("/tmp/lock.txt""w+"); 
  13. if (flock($fp, lock_ex)) { // 进行排它型锁定 
  14.     fwrite($fp"write something here "); 
  15.     flock($fp, lock_un); // 释放锁定 
  16. else { 
  17.     echo "couldn't lock the file !"
  18. }//开源软件:phpfensi.com 
  19. fclose($fp); 
  20. ?> 

flock() 不能用于 nfs 以及其它一些网络文件系统,详细资料查看自己操作系统的文档,在部分操作系统中 flock() 以进程级实现,当用一个多线程服务器 api,比如 isapi时,可能不可以依靠 flock() 来保护文件,因为运行于同一服务器实例中其它并行线程的 php 脚本可以对该文件进行处理.

转载请注明来源:php flock函数实例

  哈尔滨品用软件有限公司致力于为哈尔滨的中小企业制作大气、美观的优秀网站,并且能够搭建符合百度排名规范的网站基底,使您的网站无需额外费用,即可稳步提升排名至首页。欢迎体验最佳的哈尔滨网站建设