PHP / MySQL - yeni kullanıcılar gibi değerler kriter düzenli recalcuation kendi veri göndermek

5 Cevap php

Benim çok genç programlama "kariyer" henüz karşılaşmadım sorunun yeni bir tür ile karşı karşıya kalıyorum ve onu en iyi mücadele konusunda fikirlerinizi öğrenmek istiyorum.

The situation A research application (php/mysql) gathers stress related health data from users. User gets a an analyses after filling in the questionnaire. Value for each parameter is transformed into a percentile value using a benchmark (mean and standard devitation of existing data set).

The task Since more and more ppl are filling in the questionnaire, there is the potential to make the benchmark values (mean/SD) more accurate by recalculating them using the new user data. I would like the database to regularly run a script that updates the benchmark values.

The question I've never used stored precedures so far and I only have a slight notion of what they are but somehow I have a feeling they could maybe help me with this? Or should I write the script as php and then set up a cron job?

Cron açıkça gitmek için yolu gibi [değiştir] cevapların ilk çift sonra görünüyor. [/ Edit]

5 Cevap

Ne düşünüyorsanız şekillerde bir dizi yapılabilir.

  1. Kur yeni bir rekor güncellendiğinde değerleri hesaplamak için DB bir tetikleyici olabilir. Gerekirse bir sproc değerleri güncelleştirmek için gerekli kodu saklamak olabilir.

  2. Eğer bir PHP komut dosyası yazmak ve cron üzerinden düzenli olarak çalıştırmak olabilir.

# 1 veritabanına ekler yavaşlatacaktır ancak veri always güncel olduğundan emin olun. Bu yeni değerleri günceller ise 2. masaları kilit olabilir ve veriler sadece bir sonraki güncellemesine kadar doğru olacaktır. Eğer yapmak istediğiniz ne olursa olsun yedek olarak tetik ve sproc oluşturma komut dosyaları saklamak gerekiyordu oysa # 2, komut kolayca sürüm sistemde saklanabilir gibi, yedeklemek için çok daha kolaydır.

Eğer bir yöntemi seçmek önce Açıkçası sizin gereksinimleri kadar tartmak gerekir.

Cron size kaynak kodu yönetim sistemi içinde tutmak sağlar, ve bir veritabanı soyutlama katmanı kullanarak eğer Hiç geçmek için karar eğer diğer veritabanları için taşınabilir olacak gibi PHP kurmak. Bu nedenlerden dolayı, ben saklı prosedürler üzerinde komut ile gitmek eğilimindedir.

Bu işi yapmak için en kolay yolu web kullanarak (PHP gibi geliyor) ve cron'nun onu aramak aynı dilde bir senaryo yazmak için muhtemelen.

Daha karmaşık iki yerde (mevcut hesaplamalar ve bir saklı yordam) mantığı koyarak gereken daha yapmak gerek yok.

Veri hacmi anında hesaplanarak çok fazla olduğunu yeterince büyük değilse, sonra da:

  1. Toplamları denormalise için php script ile Cron iş
  2. Toplamları artırır ekler üzerinde tetikleyici

cron job yolu ile gitmek. Basit, sağlam, çalışır. PHP / MySQL dünyada ben saklanan prosedürleri no-go söyleyebilirim.