【问题标题】:Can we schedule cron job in the php script?我们可以在 php 脚本中安排 cron 作业吗?
【发布时间】:2019-06-03 02:19:00
【问题描述】:

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

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

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

虽然通过每分钟调用文件来完成我的任务,但还是想知道有没有更好的方法。

提前谢谢你。

【问题讨论】:

    标签: php cron cron-task


    【解决方案1】:

    每分钟使用 cron

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

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

    这是否意味着您在 DBMS外部进行平局检查?那会很傻。

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

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

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

    【讨论】:

    • 首先,感谢您抽出宝贵的时间来回答。实际上db表中不会超过1-5行,只保存日期、时间和状态(活动或非活动)。所以我认为我使用 sudo 方式不会有任何问题,因为我们将在 db 表中的时间准确地安排 cronjob。但主要问题是我无法找到任何 sudo 方式的来源来安排cronjob 就在 php 脚本中。如果我在某处出错,请纠正我,如果您知道任何关于编写 cron 的 sudoway 的来源,请指导我。
    • 在两行之间进行 lot 的阅读,听起来您不是在尝试按计划发送电子邮件,而是在特定的延迟时间 - 这意味着 cron 是错误的方法(除非您使用轮询机制)而不是您应该使用 atd。 “我无法在 php 脚本中找到任何 sudo 方式来安排 cronjob 的来源” - 这是您所问的所有事情中最简单的部分。很长的路要走。真的。大脑麻木的简单。没有人会发布它,因为它太明显了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多