Ben merkezi bir parçası olarak kullanıcı sıralamasında olan bir web sitesi var, ancak kullanıcı sayısı 50.000 'den fazla büyüdü ve siralamasi her 5 dakikada bir güncelleme ile tüm bu döngü sunucu üzerinde bir yük koyuyor. Kolayca en azından her 5 dakikada saflarına güncelleştirmek için kullanılabilecek daha iyi bir yöntem var mı? Bu php ile olmak zorunda değildir, bunun gibi bir şey daha iyi bir iş yapmak mümkün olsaydı ben neden olacağını emin değilim ama sadece benim bırakarak, (perl komut dosyası veya bir şey gibi çalıştırılan bir şey olabilir seçenekleri) burada açın.
Bu benim şu anda saflarını güncellemek için ne olduğunu:
$get_users = mysql_query("SELECT id FROM users WHERE status = '1' ORDER BY month_score DESC");
$i=0;
while ($a = mysql_fetch_array($get_users)) {
$i++;
mysql_query("UPDATE users SET month_rank = '$i' WHERE id = '$a[id]'");
}
UPDATE (solution):
İşte az Tüm 50.000 satır (Tom Haigh tarafından önerildiği gibi rütbe birincil anahtar yapmak) yürütmek ve güncellemek için bir saniyenin 1/2 daha uzun sürer çözüm kodudur.
mysql_query("TRUNCATE TABLE userRanks");
mysql_query("INSERT INTO userRanks (userid) SELECT id FROM users WHERE status = '1' ORDER BY month_score DESC");
mysql_query("UPDATE users, userRanks SET users.month_rank = userRanks.rank WHERE users.id = userRanks.id");