Cron 作业限制

Sim*_*mon 2 php cron

我想每周运行一次运行 php 脚本的 cron 作业。

该脚本需要从数据库中获取所有用户并运行另一个脚本,该脚本向每个用户发送一封电子邮件,其中包含从外部 API 提取的数据的报告。

问题是,每个 cron 作业都有 100mb 的内存限制。如果我的数据库中有数千个用户并且我需要从外部 API 检索大量数据,我很快就会超出内存限制。

有没有办法通过分解 php 脚本来解决这个问题?你的策略是什么?

lor*_*o-s 5

如果您想分解脚本,您可以保留每周的 cron,但您可以将其排入数据库表中,而不是发送邮件。然后,使用每 5 或 10 分钟运行一次的第二个 cron,您可以读取数据库邮件队列(搜索最多 50 或 100 行),如果找到某些内容,您就发送一大堆电子邮件......

通常,这种策略(巨大的队列加载,以块为单位的较小队列处理)允许您拆分大型进程的执行。