首页 > 解决方案 > 我们可以在 php 脚本中安排 cron 作业吗?

问题描述

我是这个 cronjobs 的新手,我希望在数据库表中的特定时间和日期发送几封电子邮件(更准确地说是 2k 到 3k 封邮件)。目前为了实现这一点,我正在调用我的邮件功能文件(sendmail.php) 每分钟使用 cron 作业并比较当前时间和来自 db 表的时间,如果为 true,则会发送邮件。这样做恐怕会对性能产生一些影响。

我们可以在 php 脚本中的插入查询之后立即安排 cronjob。这样我就可以将那些时间和日期变量传递给它?

在 cron 作业中每分钟调用一次文件是一个好习惯吗?性能会因为我的应用程序一次被 25 个用户使用而受到影响吗?

虽然通过每分钟调用文件来实现我的任务,但仍然想知道是否有更好的方法。

先感谢您。

标签: phpcroncron-task

解决方案


每分钟使用 cron

如果您每分钟都在启动 cron 作业,那么您做错了一些事情。抖动和并发存在问题。

比较当前时间和来自 db 表的时间

这是否意味着您在 DBMS之外进行平局检查?那将是非常愚蠢的。

我们可以在 php 脚本中的插入查询之后立即安排 cronjob

是的,尽管您需要使用 sudo 来创建权限分离。但是,您拥有(可能)数千个 cron 作业是一个非常糟糕的主意。

虽然您的问题陈述中有很多遗漏,但根据您所说的,我建议每(例如)15 分钟运行一次 cron 作业,轮询数据库以在该时间窗口内发送电子邮件 - 使用在数据库中完成的时间比较和并发锁定。


推荐阅读