0
我需要根據他們發佈的文章的某些因素來計算用戶的積分。這是一個每小時運行一次的cron工作。用許多foreach循環計算用戶點的有效方法是什麼?
目前,我這是怎麼做的:
- 獲取誰已經發布至少1篇文章(以縮小列表)
- 對於每個用戶的用戶列表中,選擇他/她從數據庫文章(foreach循環)並進行計算。然後將他/她的觀點更新到數據庫。
基本上,它是這樣的:
$userList = getList();
foreach ($userList as $user)
{
$articleList = getArticles($user);
$point = 0;
foreach ($articleList as $article)
{
// Do calculation here
}
updateUserPoint($point);
}
這正常工作。但是,當您訪問大型數據庫(> 10k用戶和> 100k條)時,此腳本運行速度會越來越慢,因爲列表變得越來越長,這些循環需要更長的時間。 MySQL查詢的數量也迅速增加。
請幫助我一個很好的方法來做到這一點。我認爲我的效率不高,不夠好。
非常感謝。
使用'連接'..... – Rikesh
你能請一起分享一些示例數據的表結構嗎? –
@ Code-Monk:謝謝你的時間。請通過以下鏈接找到示例數據:http://pastebin.com/9CG4ZHnF。只需導入並執行它們。 –