Iyi takvim yinelenen olaylar istisna nasıl işleneceğini

2 Cevap php

Ben bir takvim uygulamak için beni gerektiren bir proje üzerinde çalışıyorum. Ben çok esnek bir sistem ile gelip çalışıyorum: yinelenen olaylar işleyebilir, ben iCal, Lotus Notes ve Mozilla gibi uygulamalar için şema baktım vb tekrarlar, istisnaları nasıl bir fikir almak için Böyle bir sistemin uygulanması hakkında gitmek. Şu anda sorun yinelenen olaylar istisnalar işlemek için en iyi yolu nedir karar yaşıyorum. Ben veritabanları biraz kullandım ama bu yüzden ben düşünüyorum iki yöntem genel performans ve / arama sorgu yeteneği açısından en uygun olacağını emin değilim gerçekten her şeyi optimize ile deneyim bir ton yok :

  1. Yinelenen olay Breaking. Yani alarak, yinelenen olay için geçerli satırda bitiş tarihini değiştirerek haricinde yeni bir satır ekleme ve eski dizisine devam başka bir satır ekleyerek.
  2. Sadece bir istisna ekledi. Yani bir yüzdesel olarak gösteren bazı alanına sahip yeni bir satır ekleyerek.

Ben karar veremiyorum Peki neden burada. Ikinci yöntemi ile tek satırla apposed her düzenleme 2 ekstra satır gerektirir beri yöntem, bir çok daha fazla satır neden olacaktır. Öte yandan ben bir olayı bulmak için sorgu çok aptalca gülümsemek olabilir, ve böylece muhtemelen daha hızlı (?) Ilk yöntem kullanılarak düşünüyorum. İkinci yöntem, verileri aldıktan sonra iki satır kesişim kaldırmak gerekecek çünkü uygulama sunucusu üzerinde hesaplama daha fazla ihtiyaç olacak gibi görünüyor. Ben veri tabanları çoğunlukla web siteleri için darboğaz olduğunu biliyorum ve ben size bir sürü düşünce ya proje gerçekten önemli verimlilik farkı için yeterince büyük olsun, muhtemelen asla, çünkü gayet emin değilim, ben hala uygulamak istiyorum En iyi çözüm. Peki yöntem siz alacağını, ya da tamamen farklı bir şey yapmak istiyorsunuz?

Ayrıca, bir yan not olarak ben MySQL ve PHP kullanarak olacak. Özellikle veritabanı alanında bunun için daha uygun olacağını düşünüyorum başka bir teknoloji varsa, bunu belirtin.

Tavsiye için teşekkürler.

2 Cevap

Ben sadece istisnalar dışında bir satır girmek ve yinelenen kümesinden bunları kaldırmak için kod kullanmaya karar verdik. Ben onunla bitti ama ben denemek ve tüm bitince bazı performans sonuçları ile buraya geri göndermek için hatırlayacağım önce bir süre olacak.

Olaylar, kalıcı değildir değiştirmek veya fesih tabidir.

Siz durumunda her tarih için bir satır eklemek ve bir tekrarlanan etkinliği düzenlerken üzerine, her olayın örneklerini ya da sadece bir düzenleme seçeneğini vermelidir.

Bunu yaparken, gerçekten sadece olay etkin olup olmadığını göstermek için fazladan bir alan gerekir gerekir.

Düzgün endeksli, bu sorgular üzerinde önemli bir fark yapmaz.

Bir örnek olacaktır:

SELECT * FROM events WHERE event_id = 123 AND active = 1;

Hangi dizin event_id ve aktif kolon için gerekli olurdu vaka üzerinde.