Php / MySQL ile zamanlanmış olaylar

5 Cevap php

Ben belli bir süre geçtikten sonra, bir tablodaki bir değeri değiştirmek için bir yol gerekir. Benim geçerli yöntem aşağıdaki gibidir:

  • Tabloda bekleme dönemi için bitiş saati eklemek
  • Bir kullanıcı değiştirilecek değeri isteyen bir sayfa yüklediğinde, görmek için kontrol ederseniz geçerli> = bitiş zamanı
  • Hiçbir şey, eğer, değerini değiştirmek ve eğer değilse, bitiş saati alanını kaldırmak

Bu sitede önemli bir özelliği olacak ve böylece verimlilik anahtarıdır; aklınızda ile, muhtemelen ben bunu yapıyorum nasıl sorunu görebilirsiniz. Bu kod aynı yığın birisi bilgilere ihtiyacı bir sayfaya erişmek her zaman denilen olacak.

Iyileştirmeler ya da daha iyi yöntemler için herhangi bir öneri büyük tercihen php veya perl, duyacağız.

In response to cron job answers: Thanks, and I'd like to do something like that if possible, but hosts limits are the problem. Since this is a major part of the app, it can't be limited.

5 Cevap

neden perde arkasında bu bilgileri güncellemek için bir cron kullanmak değil mi? bu şekilde her sayfa hit kontrolleri boşaltması ve aslında app gereksinimlerini karşılamak için zamanlama zamanlayabilirsiniz.

Eğer cron erişim zorunda değilsiniz beri çözüm, çok mantıklı geliyor. Başka bir yolu da dosyada değeri saklamak olabilir, ve onu tekrar değiştirme ihtiyacı varsa (filemtime ("checkfile.txt")), ve karar en son ne zaman bir dahaki sefere sayfa yüklü kontroldür. Her iki yöntem için performansını test etmelisiniz.

Aralıklarla veritabanındaki her alanını kontrol ve bu şekilde güncellemek için bir cron işi kullanabilir miyim?

Bu büyük bir bölümü güncelleştirmelerin gerekli nasıl sık sık. Paylaşılan ana bir çok uygulamayı etkileyebilecek, her 15 dakikadan fazla, örneğin, cron çek sıklığını sınırlamak.

Her sayfa yük üzerinde çeşit bir tetikleyici kullanabilirsiniz. Ben gerçekten bu performansını nasıl etkileyeceğini hiç bir fikrim yok ama belki bir başkası biraz ışık tutabilir.

Performans gerçekten (muhtemelen fark çok daha fazla anlamına gelir) bir sorun olmaya başlar Eğer bilgi depolamak için memchached kullanabilirsiniz ...