Tam olarak bir flock()
ed dosyasının kilitli olduğunu anlamakta sorun yaşıyorum. Öyle gibi basit bir metin dosyası kilitleme ediyorum: Onlara çalıştırdığınızdaPHP neden bu kilitli dosyaya okuma/yazma yapabilir?
// test.php
$filename = "data.txt";
if (is_readable($filename)) echo "File is readable\n";
else echo "File is not readable\n";
if (is_writable($filename)) echo "File is writable\n";
else echo "File is not writable\n";
Fakat, ikisi de onlar var: Dosya is_writable()
/is_readable()
eğer
// file_lock.php
$filename = "data.txt";
$delay = 5;
$lock = fopen($filename, "w");
if ($lock === FALSE || !flock($lock, LOCK_EX | LOCK_NB, $block) || $block) {
echo "ERROR: Can not open or lock " . $filename . "\n";
sleep($delay);
}
else {
echo "SUCCESS: " . $filename . " locked.\n";
sleep($delay);
flock($lock, LOCK_UN);
echo $filename . " unlocked\n";
}
Sonra, başka bir komut dosyasından diye kontrol erişimi:
$ php file_lock.php & php test.php
SUCCESS: data.txt locked.
File is readable
File is writable
data.txt unlocked
docs here ve here ayrıntıları oldukça yetersizdir, ne eksik? Akın yanlış kullanıyor muyum? is_readable()
ve is_writable()
işlevleri, okuma/yazılabilirliği belirlemek için ilgisiz bir şey olup olmadığını kontrol ediyor mu?
Sadece merak ediyorum, gerçekten test.php dosyasındaki dosyaya yazmayı denediniz mi? –
Okunabilir/yazılabilir IIRC tamamen izinli çekler, bir dosyanın kilit durumunu kontrol etmiyorlar mı? –
@Tom Dosyayla gerçekten etkileşimde bulunmayı denemedim, _should_ kilitli dosya olarak çalışmayacağını düşünmüştüm. – Will