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创建脚本存储在要进行的任何备份中。

显然,在选择一种方法之前,我们必须权衡自己的要求。