我是这个cronjobs的新手,我希望在特定时间和日期在数据库表中发送几封电子邮件(更精确的2k至3k邮件)。邮件功能文件(sendmail.php)使用cron作业每分钟,比较当前时间和db表中的时间,如果为true,则将发送邮件。这样做恐怕会影响到表演。
我们可以在php脚本中的插入查询之后安排cronjob吗?这样我就可以将那些时间和日期变量传递给它了?
在cron作业中每分钟调用一次文件是一种好习惯吗?因为我的应用程序一次可被25个用户使用,性能会得到影响吗?
尽管通过每分钟调用一次文件可以完成我的任务,但仍然想知道是否还有更好的方法。
谢谢。
答案 0 :(得分:1)
每分钟使用cron
如果您每分钟都执行cron作业,那么您做错了什么。抖动和并发存在问题。
比较当前时间和数据库表中的时间
这是否意味着您正在进行DBMS的领带检查 ?那太傻了。
我们可以在php脚本中的插入查询之后安排cronjob吗?
是的,尽管您需要使用sudo来创建特权分离。但是,您拥有(可能)数千个cron工作是一个非常糟糕的主意。
虽然您的问题陈述中遗漏了 lot ,但根据您的发言,我建议每隔15分钟(例如)每15分钟运行一次cron作业,以轮询数据库以查找在该时间窗口中发送的电子邮件-在数据库中完成了时间比较和并发锁定。