由于 flock() 需要一個(gè)文件指針,因此可能不得不用一個(gè)特殊的鎖定文件來保護(hù)打算通過寫模式打開的文件的訪問(在 fopen() 函數(shù)中加入 \\\"w\\\" 或 \\\"w+\\\"),實(shí)例代碼如下:

  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)) { // 進(jìn)行排它型鎖定 
  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 以及其它一些網(wǎng)絡(luò)文件系統(tǒng),詳細(xì)資料查看自己操作系統(tǒng)的文檔,在部分操作系統(tǒng)中 flock() 以進(jìn)程級實(shí)現(xiàn),當(dāng)用一個(gè)多線程服務(wù)器 api,比如 isapi時(shí),可能不可以依靠 flock() 來保護(hù)文件,因?yàn)檫\(yùn)行于同一服務(wù)器實(shí)例中其它并行線程的 php 腳本可以對該文件進(jìn)行處理.

轉(zhuǎn)載請注明來源:php flock函數(shù)實(shí)例

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。