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 $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 eklenecek\n" ) ; 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 dosya ile 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.