我有一个有趣的情况需要在项目中进行计算,并且正在寻找一种有效的方法来处理它。这是场景。
我们正在制作一个“投票”网站,用户可以在其中回答投票问题。他们可以回答每个问题一次。
我们正在根据每个用户的回答为他们生成一个“分数”。他们每回答相同的其他用户获得 1 分。
例如:
Question 1 has 2 answers, "Yes" and "No"
7 Users answered "Yes" and 3 answered "No"
Each User that answered "Yes" adds 7 points to their score
Each User that answered "No" adds 3 points to their score
If a 4th User answers "No", 1 extra point is added to each User that answered "No"
正如您可以想象的那样,即时执行此操作将进行太多计算,因为每次回答问题时都必须重新生成大量用户分数。所以我想每隔 X 小时做一次 Cron Job。
我的数据当前为单个用户回答的每个问题返回一行,以及每个答案的价值(逗号分隔:7,3)
我应该如何重新生成这些结果?我不想使用简单的“Foreach”来遍历每个用户,因为这似乎不会随着用户群的增长而扩展。有没有办法在后台或同时运行 PHP 脚本,以免导致循环挂起?
非常感谢任何帮助或建议!
编辑:
抱歉,我也应该稍微解释一下数据库。
这是一个 WordPress 网站,所以一些数据在默认的 WordPress postmeta 表中。计数存储为“帖子”(投票问题)的逗号分隔的 meta_key 值
所有答案都存储在他们自己的答案表中。每个答案是表中的一行,它包括 user_id、post_id(投票问题)、选择的答案(逗号分隔的 meta_key 值的索引)
这是我用来获取特定用户的所有答案的查询:
SELECT * FROM `wp_myo_ip` LEFT JOIN `wp_postmeta` ON `wp_myo_ip`.`myo_polling_id` = `wp_postmeta`.`post_id` AND `wp_postmeta`.`meta_key` = 'myo-votes' WHERE `wp_myo_ip`.`myo_polling_ip` = 1
该myo_polling_ip
列实际上是用户 ID