PHP / mySQL-新用户提交数据后定期重新计算基准值
时间:2020-03-05 18:58:51 来源:igfitidea点击:
我面临着一种新的问题,这在我很小的编程"职业"中还没有遇到过,并且想知道我们对如何最好地解决它的意见。
情况
一个研究应用程序(php / mysql)从用户那里收集压力相关的健康数据。用户填写调查表后将进行分析。使用基准(现有数据集的均值和标准偏差)将每个参数的值转换为百分位值。
任务
由于越来越多的人填写调查表,因此有可能通过使用新的用户数据重新计算基准值(平均值/标准差)来使基准值更准确。我希望数据库定期运行更新基准值的脚本。
问题
到目前为止,我从未使用过存储过程,而对它们是什么只有一个小小的概念,但是我有某种感觉,他们也许可以帮助我?还是应该将脚本编写为php,然后设置cron作业?
在回答了最初的几个问题之后,看来cron显然是要走的路。[/ edit]
解决方案
回答
通过将PHP设置为cron作业,我们可以将其保留在源代码管理系统中;如果我们使用的是数据库抽象层,则可以决定将其移植到其他数据库中。由于这些原因,我倾向于在存储过程中使用脚本。
回答
如果数据量足够大而无法即时计算,则可以:
- 用PHP脚本执行Cron作业以使总数反规范化
- 触发增加总数的插入
回答
使用cron工作方式。简单,牢固,有效。在PHP / MySQL世界中,我会说存储过程是行不通的。
回答
进行此工作的最简单方法可能是使用网站使用的相同语言(类似于PHP)编写脚本,然后从cron调用该脚本。
通过将逻辑放在两个位置(我们现有的计算和存储过程),无需使其变得比原来更加复杂。
回答
我们正在考虑的事情可以通过多种方式完成。
- 我们可以在数据库中设置触发器,以在每次更新新记录时重新计算值。如有必要,我们可以将更新值所需的代码存储在sproc中。
- 我们可以编写一个PHP脚本并通过cron定期运行它。
#1将减慢对数据库的插入速度,但将确保数据始终是最新的。 #2在更新新值时可能会锁定表,并且数据将仅在下一次更新之前是准确的。 #2备份起来容易得多,因为脚本可以轻松地存储在版本控制系统中,而我们需要将触发器和proc创建脚本存储在要进行的任何备份中。
显然,在选择一种方法之前,我们必须权衡自己的要求。