我面临着一种新的问题,在我非常年轻的编程“职业生涯”中还没有遇到过,并且想知道您对如何最好地解决它的看法。

情况研究应用程序 (php/mysql) 从用户收集与压力相关的健康数据。用户填写问卷后会得到分析。使用基准(现有数据集的平均值和标准偏差)将每个参数的值转换为百分位值。

任务由于越来越多的人填写调查问卷,通过使用新的用户数据重新计算基准值(平均值/标准差),有可能使基准值(平均值/标准差)更加准确。我希望数据库定期运行更新基准值的脚本。

问题到目前为止,我从未使用过存储的程序,我对它们是什么只有一点概念,但不知怎的,我有一种感觉,他们也许可以帮助我解决这个问题?或者我应该将脚本编写为 php 然后设置 cron 作业?

[编辑]在前几个答案之后,看起来 cron 显然是要走的路。[/编辑]

有帮助吗?

解决方案

您正在考虑的事情可以通过多种方式完成。

  1. 您可以在数据库中设置一个触发器,以便在更新新记录时重新计算值。如有必要,您可以将更新值所需的代码存储在存储过程中。

  2. 您可以编写一个 PHP 脚本并通过 cron 定期运行它。

#1 会减慢对数据库的插入速度,但会确保您的数据 总是 最新。#2 可能会在更新新值时锁定表,并且您的数据只有在下次更新之前才会准确。#2 更容易备份,因为脚本可以轻松存储在版本控制系统中,而您需要将触发器和存储过程创建脚本存储在您所做的任何备份中。

显然,在选择方法之前您必须权衡您的要求。

其他提示

PHP 设置为 cron 作业,让您可以将其保留在源代码管理系统中,如果您使用数据库抽象层,则在您决定切换时,它可以移植到其他数据库。出于这些原因,我倾向于使用脚本而不是存储过程。

完成这项工作的最简单方法可能是用您的网站使用的相同语言编写脚本(听起来像 PHP)并从 cron 调用它。

无需将逻辑放在两个地方(现有的计算和存储过程),从而使其变得更加复杂。

如果数据量足够大以至于动态计算太多,那么:

  1. 使用 php 脚本进行 Cron 作业以非规范化总计
  2. 触发增加总数的插入

计划任务 方式。简单、扎实、有效。在 PHP/MySQL 世界中,我想说存储过程是不行的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top