2

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

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

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

到目前为止我从未使用过存储的程序的问题,我对它们是什么只有一点概念,但不知何故,我觉得它们可能会帮助我解决这个问题?还是应该将脚本编写为 php,然后设置 cron 作业?

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

4

5 回答 5

1

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

于 2008-09-17T13:22:31.347 回答
1

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

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

于 2008-09-17T13:24:45.367 回答
1

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

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

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

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

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

于 2008-09-17T13:26:02.120 回答
0

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

  1. 使用 php 脚本进行 Cron 作业以对总数进行非规范化
  2. 触发增加总数的插入
于 2008-09-17T13:22:34.250 回答
0

使用cron 工作方式。简单,扎实,有效。在 PHP/MySQL 世界中,我会说存储过程是不可行的。

于 2008-09-17T13:22:43.297 回答