php - 对于某些参数仅触发一次计划任务

标签 php mysql laravel laravel-4

我最近想知道我在工作中遇到的一个问题。我需要根据数据库中的记录日期(例如事件开始)执行一些操作,检查事件是否开始,然后发送一些电子邮件。这里的问题是只做一次。由于事件只是在后台启动,我认为 CRON/Scheduler(在这种情况下为 Indatus/dispatcher)是在这里实现的最佳选择,因为我可以每 5 分钟运行一次脚本来检查是否出现一些新事件,但真正的问题是您如何标记已对此事件采取实际行动。我正在考虑某种日志表,其中包含操作名称和 2 列参数来保存操作实际触发的 ID,例如

id    name    id_parameter_1    id_parameter_2

并像这样存储记录,但我认为当有更多记录时,随着时间的推移,它可能会大大减慢(仅按最后5-10分钟过滤数据库记录会有所帮助,但仍然......)。您在这方面有什么特别的经验可以指导我并分享一些想法吗? :)

最佳答案

如果您每个事件只有一个操作,例如当它开始时发送电子邮件,为什么不直接使用标记列来扩展事件表来标记您是否发送了邮件?这样您就可以避免与另一个仅保存操作的表进行 JOIN。

如果您必须将其分开,那么我会选择您建议的表格,但我不确定您是否需要这些参数列,这最终并不那么重要。如果每个事件只有一个操作,那么我认为您可以安全地删除额外的键(id),而只需拉入事件主键。您可以使用它来联接表,并且事情不那么复杂并且可能更快,就像在单个查询中一样,从事件表中提取日期(假设它在那里)并从新表中提取操作,通过搜索和联接相同的事件索引。

只是我的想法。希望对您有所帮助。

关于php - 对于某些参数仅触发一次计划任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30212912/

相关文章:

php - 在 php 中写入 csv 文件时开头的空行

mysql - 是否可以将自增主键值更新为mysql表的空值

javascript - 尝试通过 AJAX 发送输入文件数据,无法访问我的 Controller 中的数据

拉拉维尔 4 : where is to_array()?

php - 如何为淡入/淡出计数数字jquery添加文本?

php - Codeigniter 的 `where` 和 `or_where`

php - 使用外键和多对一连接三个表

php - Jquery ajax 选择下拉菜单适用于 FF 和 chrome,但不适用于 IE 7-9

MySQL 查询日志

php - 升级到 laravel 5.4 后调用未定义的方法