Rumah > Artikel > pembangunan bahagian belakang > Soalan dan jawapan tentang penguncian fail dalam pemprosesan fail PHP
Dalam artikel sebelumnya "Cara memadam direktori dalam PHP (contoh terperinci) ", pengetahuan berkaitan pemadaman direktori dalam PHP telah diperkenalkan secara terperinci Memadam direktori yang tidak kosong adalah sedikit lebih rumit . Dalam artikel ini, kita akan melihat pengetahuan berkaitan penguncian fail dalam PHP. Saya harap ia akan membantu semua orang!
Dalam artikel sebelum ini, kami telah belajar banyak tentang pengetahuan berkaitan pemprosesan fail, seperti menulis fail, membaca fail, dll. Salah satunya dipanggil kunci fail . Pemahaman tentang penguncian fail mungkin agak abstrak, kerana mekanisme penguncian fail umumnya tidak mempunyai kesan apabila membuka fail.
Apakah sebenarnya kunci fail? Dia digunakan untuk apa? Mengapa kami menggunakan kunci fail? Bagaimana kita menggunakannya? Dengan soalan ini, mari kita lihat pengetahuan berkaitan kunci fail.
Apakah kunci fail?
Soalan pertama, secara ringkasnya, kunci fail ialah mekanisme perlindungan fail Boleh difahami apabila anda membaca atau menulis fail ini, sudah ada mekanisme perlindungan A untuk fail semasa mengendalikan fail, contohnya untuk menghalang operasi lain pada fail semasa ia dikendalikan.
Tujuan kunci fail
Jika fail mempunyai kunci fail, apabila saya menggunakan fail ini, hanya saya boleh mengakses fail Ke beroperasi, melainkan kunci fail dilepaskan, orang lain tidak akan dapat mengganggu operasi saya pada fail. Hanya satu orang boleh dibenarkan beroperasi pada masa yang sama untuk mengelakkan ralat data.
Jika tiada kunci fail dan berbilang orang mengendalikan fail yang sama, ia berkemungkinan besar menyebabkan ralat data atau asimetri, jadi anda perlu menggunakan kunci fail. Inilah kegunaan fail dan mengapa kunci fail digunakan.
Cara menggunakan kunci fail: flock()
Fungsi
Seterusnya mari kita lihat cara menggunakan kunci fail PHP ini dahulu perlu Seperti yang anda tahu, kita boleh mengunci fail melalui fungsi flock() selepas membuka fail.
flock()
Format sintaks asas fungsi adalah seperti berikut:
flock(resource $handle, int $operation[, int &$wouldblock])
Apa yang perlu diberi perhatian ialah:
parameter $handle
mewakili penunjuk sistem fail, iaitu sumber fail yang dibuat melalui fopen()
parameter $operation
mewakili jenis kunci fail $wouldblock
ialah parameter pilihan; menunjukkan bahawa ia boleh Ditetapkan kepada 1
atau true
, supaya proses lain akan disekat apabila fail dikunci.
Mari perkenalkan jenis parameter $operation:
LOCK_EX
mewakili kunci tulis, iaitu dalam Semasa menulis , ia berada dalam keadaan terkunci tulis Orang lain tidak boleh menulis atau membaca Mereka hanya boleh dipulihkan selepas membuka kunci.
LOCK_SH
mewakili kunci kongsi, yang bermaksud orang lain hanya boleh membaca, tetapi tidak boleh menulis. Balas selepas membuka kunci.
LOCK_UN
bermaksud melepaskan dua keadaan di atas. Iaitu, tidak berkunci.
LOCK_NB
bermakna selepas membaca atau menulis, apabila fail dikunci, ia akan segera kembali untuk memberitahu bahawa fail yang diakses telah dikunci .
Mari kita lihat contoh seperti berikut:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = "test.txt"; $handle = fopen($file,'w+'); //打开文件 if(flock($handle, LOCK_EX|LOCK_NB)){ //给文件上锁 fwrite($handle, '被锁住了'); //写入数据 flock($handle, LOCK_UN); //释放文件锁 }else{ echo "锁失败了"; } fclose($handle);//关闭文件 readfile($file);//读取文件内容 ?>
Hasil keluaran:
Data ditulis dalam test.txt:
Daripada contoh di atas, kami telah menyelesaikan operasi mengunci fail pada fail selepas operasi selesai , gunakan fungsi fclose() untuk menutup fail kemudian baca kandungan fail melalui fungsi readfile(). Apa yang perlu diambil perhatian ialah:
Apabila kita menggunakan fungsi flock(), fail dikunci Jika kita mahu fail dibuka secara automatik, kita hanya perlu memanggil fungsi fclose(). Apabila kita menulis kod, adalah lebih baik untuk menambah pernyataan buka kunci selepas menggunakan kunci fail.
Jika anda berminat, anda boleh klik pada "Tutorial Video PHP" untuk mengetahui lebih lanjut tentang pengetahuan PHP.
Atas ialah kandungan terperinci Soalan dan jawapan tentang penguncian fail dalam pemprosesan fail PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!