我正在用 PHP 编写一个团队协作 Web 应用程序,并且我有一些事件可以通过电子邮件和/或短信通知用户。我目前的做法如下:
是否有更高效/更快/灵活的方式来设置通知?也许通过一个通过 cron 作业运行的脚本?或者我应该继续这样做吗?
感谢您的帮助。
我使用多表方法实现了与您在网站上遵循的方法类似的方法。 用户表保存联系信息以及选择加入、选择退出选项,而事件表保存通知说明。 其他几个事件由于其重要性而被硬编码。 该网站的独特之处在于用户仪表板上的“工作流程”区域,该区域还向用户显示了他们拥有的操作项目。 我们发现大多数用户忽略了电子邮件并直接处理仪表板工作流程区域。 您会惊讶地发现人们有多少次更改电子邮件或完全忽略它们。
拥有 28 万用户,日访问量数万,没有发现任何性能问题。 但是,如果您不小心,排队电子邮件的过程可能会效率低下,因此请花一些时间对您的邮件发送功能进行基准测试(就像在邮件发送完成之前和之后回显微时间一样简单)以评估其有效性。 在我当前公司的网站上,此类改进使电子邮件排队时间减少了 800%(排队是生成电子邮件并通过 php mailer 将其提交到邮件系统进行分发的过程)
我想说有一个通知队列表。让发表评论的功能仍然检查“谁想收到有关此事的通知?”但随后只记录包含此表中的消息的条目。然后从队列中有一个单独的进程工作,即您的 cron 作业建议。
根据您的数据库,您可能会使用数据库事件或触发器而不是 cron 作业。然而,这要求您的数据库允许您将代码放入数据库中以发送短信或电子邮件。这通常会带来安全风险,您在设置中可能会或可能不会担心。