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取得独占锁定(写入的程序
LOCK_UN释放锁定(无论共享或独占)

Kami akan menambah kunci eksklusif pada demo.txt dan melakukan operasi menulis.

<?php

$fp = fopen("demo.txt", "r+");

// 进行排它型锁定
if (flock($fp, LOCK_EX)) { 

   fwrite($fp, "文件这个时候被我独占了哟\n");

  // 释放锁定
   flock($fp, LOCK_UN);    
} else {
   echo "锁失败,可能有人在操作,这个时候不能将文件上锁";
}

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.


Meneruskan pembelajaran
||
<?php $fp = fopen("demo.txt", "r+"); // 进行排它型锁定 if (flock($fp, LOCK_EX)) { fwrite($fp, "文件这个时候被我独占了哟\n"); // 释放锁定 flock($fp, LOCK_UN); } else { echo "锁失败,可能有人在操作,这个时候不能将文件上锁"; } fclose($fp); ?>
  • Cadangan kursus
  • Muat turun perisian kursus