

PHP De Dosya Kilitleme
Web sunucusundaki
dosyalarımızla sadece bir kişi işlem yapıyor olsa idi, bir
sorun olmazdı; ne var ki, bir Web sitesine aynı anda birden
fazla kişi eriyebilir ve dosyalarla işlem yapan programları
çalıştırıyor olabilir. Bu, PHP`nin dosya işlemlerine engel
olabilir. Bu sebeple, işlem için açacağımız bir dosyayı, önce
kilitlemek yerinde bir önlem sayılır. Bunu, flock() fonsiyonu
ile yaparız; bu fonksiyona kilitlemek istediğimiz dosyanın
işaret değişkeninin adını ve kilit türünü belirten endeks
sayısını parametre olarak yazarız. Örnek:
php:
<?php
$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt";
$dosya = fopen ($dosya_adi , `w`) or die ("Dosya açılamadı!");
flock ( $dosya , 2); // dosyayı kilitle
$metin = "Bu satır dosyaya yazılacak: Merhaba Dünya!n";
fwrite ( $dosya , $metin ) ;
fputs ( $dosya , "Bu satır ise sonradan eklenecekn" ) ;
flock ( $dosya , 3); //dosyayı kilidini aç
fclose ($dosya);
?>
Bu fonksiyon ile kullanabileceğimiz endeks parametreleri
şunlardır:
1 Paylaşım Diğer proseslerin dosyayı paylaşmalarına imkan
verir
2 Tam Diğer proseslerin dosyaile işlem yapmasına engel olur
3 Serbest Dosyanın 1 veya 2 olan kilidini kaldırır
Bir dosya, herhangi bir PHP programı tarafından kilitlendiği
anda, aynı dsyayı daha sonra kilitlemeye kalkan diğer
programlar kendilerinden önce konulmuş kilide saygı
gösterirler.

|