mekanisme penguncian fail php
Mekanisme kunci fail secara amnya tidak mempunyai kesan sama sekali apabila satu fail dibuka. Bahagian pembelajaran ini sedikit abstrak.
Tidak fikir bagaimana untuk mencapainya?
Mengapa anda tidak dapat melihat kesannya?
Jawapan: Kerana komputer beroperasi begitu pantas, pada asasnya pada tahap milisaat. Jadi eksperimen ini sebenarnya tiada kesan.
Dalam bab ini, fahami sahaja konsep asas penguncian fail dan biasakan diri dengan fungsi penguncian fail dan mekanisme penguncian.
Penggunaan kunci fail:
Jika seseorang sedang menulis fail, orang lain turut membuka fail dan menulis fail tersebut.
Dalam kes ini, jika terdapat kebarangkalian perlanggaran tertentu, saya tidak tahu operasi siapa yang akan diguna pakai.
Oleh itu, pada masa ini kami memperkenalkan mekanisme kunci.
Jika pengguna A menulis atau membaca fail ini, tambahkan fail itu pada bahagian tersebut. Saya boleh membacanya, dan begitu juga orang lain.
Namun, jika ini berlaku. Saya menggunakan kunci eksklusif. Fail ini kepunyaan saya. Jangan sentuh kecuali saya melepaskan kunci fail.
Nota: Tidak kira sama ada kunci fail ditambahkan, berhati-hati untuk melepaskannya.
Mari kita lihat fungsi ini:
bool flock ( resource $handle , int $operation)
Ciri: penguncian fail nasihat ringan
Mari kita lihat jenis kunci:
鎖類型 | 說明 |
---|---|
LOCK_SH | 取得共享鎖定(讀取的程序) |
LOCK_EX | 取得獨(dú)占鎖定(寫入的程序 |
LOCK_UN | 釋放鎖定(無論共享或獨(dú)占) |
Kami akan menambah kunci eksklusif pada demo.txt dan melakukan operasi menulis.
<?php $fp = fopen("demo.txt", "r+"); // 進(jìn)行排它型鎖定 if (flock($fp, LOCK_EX)) { fwrite($fp, "文件這個(gè)時(shí)候被我獨(dú)占了喲\n"); // 釋放鎖定 flock($fp, LOCK_UN); } else { echo "鎖失敗,可能有人在操作,這個(gè)時(shí)候不能將文件上鎖"; } fclose($fp); ?>
Penjelasan:
1 Dalam contoh di atas, untuk menulis fail, saya menambahkan kunci eksklusif pada fail.
2 Jika operasi saya selesai, selepas penulisan selesai, kunci eksklusif dilepaskan.
3 Jika anda sedang membaca fail, anda boleh menambah kunci kongsi mengikut idea pemprosesan yang sama.