Gerçek zamanlı olarak adlandırılan eğer işlevleri hatalı değerleri kaydetmek;

0 Cevap php

Ben sitede bir şeyler yapmak için kullanıcıları ödüllendiren bir (PHP / MySQL) sistemi var. Sorunun aşkına, bir kullanıcı yaptıkları her 5 yorumlar için bir gül alır diyelim.

Ön sayfa bugün kazanılan kaç gül gösteren bir sayaç var ve kaç güller tüm zaman kazandık edilmiştir. Kaba mantığı aşağıda verilmiştir:

//Save a single, discrete event. $user --> numerical value, 1:1.
function first($user) {
  //save values related to $user into TABLE_1;
  return second($user);
}

//Calculate the sum() of all numerical events for $user for today and save that.
function second($user) {
  //save values calculated from TABLE_1 into TABLE_2;
  return third();
}

//Calculate the sum() of all numerical events for all users 
function third() {
  //save values calculated from TABLE_2 into TABLE_3;
  return true/false;
}

Yorum kaydedildiğinde, first() function başladı edilir. (1 Yorum kaydedildiğinden beri, 1) kullanıcı kimliği, olayın sayısal değeri ve zaman damgası: first() table_1 bir satır olarak açıklama olayın kaydını kaydeder.

Daha sonra, second() denir; Uid, roses_today, timestamp: kullanıcı bu açıklama ile bir gül kazandı ve table_2 3 değerlerini kaydeder ise second(), bazı matematik anlamaya gelmez.

Bu berbat vurmayacak değerdir. Nedense, roses_today değeri bazen yüksek olması ve bazen daha düşük olan, olması gereken ne değişir. Hiçbir model var - bazı değerler bazı sağda, bazıları zorlukla çok düşük, çılgınca yüksek; Burada kafiye ya da neden yok.

Ayrıca eserlerinde bir anahtar atma: Ararsam second($user) elle, table_2 yılında bu hesaplar değerler ve mağazalar doğru. Bu işlev, gerçek-zamanlı olarak çağrıldığını eğer sadece başarısız görünüyor.

Edit: Those suggesting it's a problem with the code that isn't there or that I should step through the code, please read the previous paragraph. This function seems to only fail if it's being called in real-time. Calling the very same function manually produces correct results.

0 Cevap