php - 我们可以在 php 脚本中安排 cron 作业吗?
问题描述
我是这个 cronjobs 的新手,我希望在数据库表中的特定时间和日期发送几封电子邮件(更准确地说是 2k 到 3k 封邮件)。目前为了实现这一点,我正在调用我的邮件功能文件(sendmail.php) 每分钟使用 cron 作业并比较当前时间和来自 db 表的时间,如果为 true,则会发送邮件。这样做恐怕会对性能产生一些影响。
我们可以在 php 脚本中的插入查询之后立即安排 cronjob。这样我就可以将那些时间和日期变量传递给它?
在 cron 作业中每分钟调用一次文件是一个好习惯吗?性能会因为我的应用程序一次被 25 个用户使用而受到影响吗?
虽然通过每分钟调用文件来实现我的任务,但仍然想知道是否有更好的方法。
先感谢您。
解决方案
每分钟使用 cron
如果您每分钟都在启动 cron 作业,那么您做错了一些事情。抖动和并发存在问题。
比较当前时间和来自 db 表的时间
这是否意味着您在 DBMS之外进行平局检查?那将是非常愚蠢的。
我们可以在 php 脚本中的插入查询之后立即安排 cronjob
是的,尽管您需要使用 sudo 来创建权限分离。但是,您拥有(可能)数千个 cron 作业是一个非常糟糕的主意。
虽然您的问题陈述中有很多遗漏,但根据您所说的,我建议每(例如)15 分钟运行一次 cron 作业,轮询数据库以在该时间窗口内发送电子邮件 - 使用在数据库中完成的时间比较和并发锁定。
推荐阅读
- sql - [SQL][CHINOOK][CTE] 特定专辑的平均销量,按计费国家分组
- automation - 编译脚本中的异常
- laravel - 在 livewire 中为 QueryString 传递两个值
- javascript - Javascripts not working after Django update
- javascript - JavaScript "copy to clipboard" function doesn't work on ASP.NET server
- javascript - 如何让我的机器人在加入服务器后自动创建机器人工作所需的频道和角色?
- json - 在 Discord.py 中显示来自 .json 的数据
- reactjs - Cannot access correct value in React useState at first render
- laravel - send notification email to specific user mail in laravel 8
- javascript - ORO CRM 编辑营销列表