Kullanımı:
fopen
fwrite
fclose
Iki kullanıcı aynı anda aynı dosyayı açmaya çalışırsanız ne olur?
Küçük ölçekli dosya işlemleri aynı anda iki yazma oldukça nadirdir o kadar hızlıdır. Ne olursa olsun, flock
dosyayı kilitlemek için kullanabilirsiniz:
$fp = fopen('file.log', 'a+');
flock($fp, LOCK_EX);
fwrite($fp, 'my data');
flock($fp, LOCK_UN);
fclose($fp);
Not fclose
otomatik olarak dosya kilidini, ama ben kod yapar bulmak biraz daha kullanıcı dostu Lütfen bu şeyleri koymak için
Önemli olan:
Klasik örnek birçok metinlerde kullanılan Cash machine/bank balance strong> bir örnektir.
shared writable state her türlü concurrent access control böyle bir mutex gibi çeşit gerektirir, ama bu tür race conditions {[gibi potansiyel sorunlar ton vardır (4)]} strong>.
Birçok işletim sistemi ancak izin File locking of some description, which means the other process waits for the lock to be released. See PHP's flock() for locking a file. strong>
Ayrıca yaklaşım "/ birleştirme taahhüt, ödeme, değişim" bir kullanabilirsiniz.
Lütfen nedenlerle bağlı olarak, bu tür MySQL veya SQLite bu ağır okumak veya bir durumu paylaşmak için faster, more robust yollar sağlayacak gibi bir veritabanı düşünebilirsiniz cache-az.
Sayısız sorunlar, tuzaklar ve paylaşım devlet yolları büyüktür. Tüm Vikipedi kullanım için özür dilemek istiyorum.
Use file_put_contents()
instead with the FILE_APPEND
veya LOCK_EX
bayraklar. Strong>
Bu bayrakların herhangi bir yazı için dosyayı kilitleyin.