php flock函数实例

由于 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 脚本可以对该文件进行处理.