PHP webapp açılıyor

7 Cevap php

Gerekirse o geri alınabilir, böylece bazı durumlarda, benim app insanlar yapmak bazı şeyleri günlüklerini tutmak istiyorum.

Bir dosya veya bir veritabanında bu tür günlükleri saklamak için en iyisidir? Ben artılarını ve eksilerini bu kurulum için başka bir tablo olduğunu dışında ne gibi bir kaybı tamamen değilim.

Ben içine bakmak ve öğrenmek gerektiğini farkında değilim üçüncü (veya dördüncü vb) seçeneği var mı?

7 Cevap

Neredeyse kesinlikle esnek, kayıt tabanlı erişim için bir veritabanı kullanmak ve eşzamanlı veri erişimini işlemek için veritabanının yeteneği yararlanmak isteyecektir. Eğer ne zaman ve kimler tarafından verilen bir işlem geri olmuştur belirten satır güncellemek için yeteneğine sahip olduğu gibi, yapılandırılmış bir formatta olan bir yararı olduğunu, geri gerekebilir bilgileri izlemek gerekir.

Büyük olasılıkla yalnızca çok yüksek performanslı bir sorun olup olmadığını bir dosyaya yazmak istiyorsanız, ya da bir veritabanında depolamak için unweidly olabilir kaydın başına veri çok yapılandırılmamış veya büyük miktarda varsa. Uygulama işlemleri veritabanı hız çok sayıda olmadıkça bir sorun olması olası olduğunu unutmayın. Ayrıca bir dosya ile çalışıyorsanız büyük olasılıkla siz uğraşmak zorunda istediğiniz bir şey olmadığı çok dikkatli (/ yazma / okuma kilit) eşzamanlı erişim işlemek gerekir unutmayın.

Veritabanında saklamak için gitmek için en az bir kesin nedeni var. Sen hemen verir, hangi MySQL GECİKMİŞ INSERT (veya diğer veritabanları benzer yapıları) kullanabilirsiniz. Sen sorguları bu tür veritabanından herhangi bir geri dönüş verileri almazsınız ve onlar uygulanacak garanti edilmez.

INSERT GECİKMİŞ kullanarak, çünkü günlük çok için app yavaşlatmak değildir. Veritabanı herhangi bir zamanda diske ınsert'ler yazmak serbesttir, bu yüzden birlikte ekler bir demet paket olabilir.

Sorgu aslında yürütülen her dedikleri olacak, çünkü MySQL en damgası işlevi yerleşik (CURRENT_TIMESTAMP veya CUR_DATE () gibi) kullanırken dikkat etmek gerekiyor. Yani veritabanı tarafından her zaman veri programlama dilinde oluşturulan emin olun, ve olmamalıdır. (Bu paragraf MySQL özgü olabilir)

I log4php büyük bir hayranı değilim. Size günlük eylemler için standart bir arayüz sağlar. Bu log4j dayalı. Kütüphane, merkezi bir config dosyası yükler, böylece günlük değiştirmek için kodunuzu değiştirmeniz gerekir asla. Ayrıca vb dosyaları, syslog, veritabanları gibi, birkaç günlük hedefler sunar

Ben sadece Düzeltilebilirlik için bir veritabanı kullanmak istiyorum - aynı zamanda bir dosya üzerinde birden çok kere düzenlendi bazı kaçırmış alıyorum neden olabilir.

Kullanıcıların bir sürü zaman ben ikinci Yukarıdaki öneriler hem düz bir dosya günlüğüne kilitleme o dosya eklemek sorunlarına neden olabilir olacaktır.

Benim önceki parçacığı bakabilirsiniz http://stackoverflow.com/questions/23770/good-strategy-for-leaving-an-audit-trailchange-history-for-db-applications aynı konuyu kapsayacak gibi görünüyor.