Bir çok uğrak ortamda bir hata günlüğü dosyasının içeriği bir dize eklemek nasıl?

2 Cevap

Benim yaş eski php gün (yıl önce) Ben biraz PHP bir günlük dosyası oluşturma ile big sorun olduğunu hatırlıyorum. Rasgele zamanlarda, dosya aniden (boş) Düz boş idi. Bu oldukça yakın bir şey kullandı:

$myFile = "myFile.txt";
$fh = fopen($myFile, 'a');
$str = "New Entry...\n";
fwrite($fh, $str);
fclose($fh);

Gerçekten (web sörf) tarafından PHP betikleri çalıştırarak aynı anda 500 kullanıcı gibi orada bir hata günlük dosyası ile çalışmak için güvenli bir yolu var mı? Her sayfa görünümü bir hata günlüğü üretmek için neden gerçekten kötü bir hata var varsayalım. O zavallı Dosyam.txt sonra saniyede 100 defa gibi erişilir. Ben bu işe yaramaz hissediyorum. Ben umarım yanılıyorumdur.

Bunu nasıl yapacaksın?

2 Cevap

Lütfen dosya sistemi bağlı olarak, kayıp günlük girdileri neden yarış koşulları olabilir, ancak toplam içeriği kaybolur asla.

Eğer güvenilir günlükleri istiyorsanız, o zaman giriş yazmadan önce dosyayı yazma kilitlemek zorunda olacak.

Alternatif olarak, bir veritabanındaki girdileri koydu.

Akın kullanın.

(!) Ama aynı zamanda not:

"File locking requires a fairly modern file system, such as NTFS (Windows), ext3/ext4 (Linux) and HFS+ (Mac). Furthermore, the Network File System (NFS), commonly used to provide file sharing across Unix boxes, is not suitable for use with flock(). " http://tuxradar.com/practicalphp/8/11/0

"On many platforms (including most versions or clones of Unix), locks established by flock() are merely advisory. Such discretionary locks are more flexible, but offer fewer guarantees. This means that files locked with flock() may be modified by programs that do not also use flock(). Windows NT and OS/2 are among the platforms which enforce mandatory locking. See your local documentation for details." http://www.sdsc.edu/~moreland/courses/IntroPerl/docs/manual/pod/perlfunc/flock.html

Belki başka bir program (veya süreç?) ... Dosya temizleme nedir?

Ben de okudum, bazı makale değil, sadece tavsiye Windows veya SMB ağ paylaşımları dosyalar üzerinde ama bu adamcağız sürüsünü kullandığını söyledi unutmayın görünüyor.