PHP檔案鎖函數flock()詳細介紹_php技巧

來源:互聯網
上載者:User

檔案作業系統是在網路環境下完成的,可能有多個用戶端使用者在同一個時刻對伺服器上的同一個檔案訪問。當這種並發訪問產生時,很可能會破壞檔案中。例如一個使用者正在向檔案中寫入資料,當還沒有寫完時,其他使用者在這一時刻也向這個檔案中寫資料,就會造成資料寫入混亂。還有,當使用者沒有將資料寫完時,其他使用者就去擷取這個檔案中的內容,也會得到殘缺的資料。

在PHP中提供了flock()函數,可以對檔案使用鎖定機制(鎖定或釋放檔案)。當一個進程在訪問檔案時加上鎖,其他進程要想對該檔案進行訪問,則必須等到鎖定被釋放以後。這樣就可以避免在並發訪問同一個檔案時破壞資料。該函數的原型如下:

複製代碼 代碼如下:

bool flock(int handle,int operation[,int&wouldblock])             //輕便的諮詢檔案鎖定

第一個參數handle必須是一個已經開啟的檔案資源,第二個參數opeation也是必需的,規定使用哪種類型。operation可以是以下值之一:
★LOCK_SH取得共用鎖定定(從檔案中讀取資料時使用)。
★LOCK_EX取得獨佔鎖定(向檔案中寫入資料時使用)。
★LOCK_UN釋放鎖定(無論共用或獨佔鎖,都用它釋放)。
★LOCK_NB附加鎖定(如果不希望flock()在鎖定時堵塞,則應在上述鎖定後加上該鎖)。

如果鎖定會堵塞的話(已經被flock()鎖定的檔案,再次鎖定時,flock()函數會被掛起,這時成為鎖定堵塞),也可以將可選的第三個參數設定為1,則當進行鎖定時會阻擋其他進程。鎖定操作也可以被fclose()釋放。為了讓flock()函數發揮作用,在所有訪問檔案的程式中都必須使用相同的方式鎖定檔案。該函數如果成功則返回TRUE,失敗則返回FALSE。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.