如何在每天的设定时间执行PHP查询+关于方法的建议

时间:2016-04-03 21:19:53

标签: php mysql

我正在寻求关于我正在考虑实施的功能的一些建议。

我有一个变量$row['summa'];,它获取两个表中的总行数。它基本上是所有被标记的帖子的计数,并且总共标记了评论。所以,我$row['summa'];的{​​{1}}的回音10意味着flagged_commentsflagged_posts我有10行,这是正确的。

现在使用这个,我想在我的数据库中创建一个包含以下字段的新表:

id
date
total_flagged

我需要它,以便每天(最好是每天午夜)执行PHP查询,获取日期(我更喜欢白天,即星期一,星期二等)并获取标记事件的总数。一天。

示例:

今天是星期天。星期天总共有10起被标记的事件。因此,在午夜,将执行查询INSERT:

id: 1
date: sunday
total_flagged: 10 

然后,一旦执行,标记的总数将重置,以便我可以确定星期一的标记事件总数。

我需要以上所有的原因是,对于我的管理员方面,我正在尝试实现一个图表,它将根据数据库中的PHP数据动态更新。该图表将显示x轴上的天数和y轴上标记的事件数。

但是,由于附加到图表和数据库的这个日期/日期,我可能不得不向date_flaggedflagged_posts表添加一个名为flagged_comments的新列。

我只是不相信我对我想要达到的目标的态度是最可持续的。只是寻求有关如何处理此问题以及如何在设定的时间每天执行PHP查询的建议。

1 个答案:

答案 0 :(得分:1)

已经提到了cron方法。但是,以这种方式生成的数据的有效性取决于cron的可靠执行。为了使这种方法能够抵御可能的错误条件(例如,服务器在午夜关闭,其他管理员对crontab进行意外更改等),您必须构建一些检查和安全措施。此外,如果您使用提供商托管系统并且需要稍后迁移,则新提供商可能不提供cron功能。只是说 - 在将cron与Web和数据库服务混合时,需要考虑依赖性。

我更喜欢不依赖于cron和可能的竞争条件的解决方案。此解决方案将涉及使用日期/时间日志来扩展您的数据库,评论或帖子已被标记。这将允许您在以后的任何时间计算特定日期的统计数据,而不必依赖于午夜的及时合并。如果cron由于某种原因发生故障,这已经避免了一些问题。

为了避免必须完全使用cron,我设置了管理员端,以便生成图表的PHP脚本首先检查是否已经计算了所请求日期的图表数据。如果没有,它会计算统计信息并将其存储在数据库中。对脚本的后续调用将直接从数据库中获取计算数据。这意味着当天第一个呼叫者的脚本执行时间和响应时间更长。当然,这个解决方案的可行性取决于您的特定设置中的执行时间,表格大小等,我的建议只有在不到一分钟左右而不是几小时才能生成统计数据时才有意义。