PHP:具有当前小时条件的单个cronjob,用于发送多个不同的电子邮件

PHP:具有当前小时条件的单个cronjob,用于发送多个不同的电子邮件,php,cron,scheduled-tasks,Php,Cron,Scheduled Tasks,我有几种类型的自动电子邮件可以通过编程方式发送给数据库中的用户。金额将发生变化,但执行时间为:00夏普 因此,我没有将不同的cron作业设置为在一天中的不同时间执行,而是只创建一个每小时运行一次的脚本,它检查时间并相应地发送电子邮件。以下是大概的想法: date_default_timezone_set('America/Los_Angeles'); // setting the timezone to the one of the hosting server $cur_hour = (int

我有几种类型的自动电子邮件可以通过编程方式发送给数据库中的用户。金额将发生变化,但执行时间为:00夏普

因此,我没有将不同的cron作业设置为在一天中的不同时间执行,而是只创建一个每小时运行一次的脚本,它检查时间并相应地发送电子邮件。以下是大概的想法:

date_default_timezone_set('America/Los_Angeles');
// setting the timezone to the one of the hosting server
$cur_hour = (int)date('G'); // PDT hour

if ($cur_hour == 1) { // 1am

    // collect information from db
    // send e-mail A to these users
    // update db

} elseif ($cur_hour == 2) { // 2am

    // collect information from db
    // send e-mail B to these users
    // update db

} elseif ($cur_hour == 3) { // 3am

    // likewise…

}
这是正确的方法还是有更有效或更好的方法

其他信息:
有些电子邮件中存在变量,因此我无法在那里发送一封电子邮件。我需要分别向每个适用的用户发送电子邮件,例如A。现在还没有成千上万的用户。

我会有一个字符串数组(模板),其中可以包含
$username
等内容。根据小时从数组中选择适当的字符串。使用
eval
为该用户构建电子邮件


不管人们怎么说,这是对
eval
的一个很好的使用。这是安全的,因为字符串在您的控制下。只需确保变量已被清理(但作为一名优秀的程序员,您会在将它们放入数据库或转义它们之前进行清理)

问题是,我的变量不是要发送到[email]变量的“亲爱的[姓名][姓氏]”。例如,我有一个类似于“您在最近的N2中有N1个新通知”的内容,其中N1是一个整数,N2是另一个整数,它变成了
24小时
3天
2周
取决于特定用户的通知电子邮件频率首选项。为什么不在构建电子邮件之前将这些整数转换为格式的字符串?我已经在这样做了,但实际情况是,每封电子邮件使用不同值的不同数量的变量。无论如何,我实际上是想弄清楚,使用if条件(如我的示例代码)检查时间并相应地执行不同的脚本是否正确。@inhan-为什么不只使用24个cron脚本(它们可能是具有不同参数的同一脚本)。编辑
crontab
@inham是一项一次性工作-存在一组字符串,可以在模板中使用。有些可能是空的。