【问题标题】:PHP - Send an e-mail with a delay of x timePHP - 发送一封延迟 x 时间的电子邮件
【发布时间】:2018-09-10 08:15:35
【问题描述】:

我需要在 x 次后使用 php 代码发送和发送电子邮件。

我不想使用 cronjob。所以,这段代码不起作用,因为它是一次打印的 php 代码,并且不会像 js 那样自动更改 DOM。但我需要这样的东西:

  $today = date('Y-m-d H:i:s');
  $dataorder = date("Y-m-d H:i:s", $order->created);
  $delay_days = 240;
  $senday = date('Y-m-d H:i:s', strtotime( "$dataorder + $delay_days min" ));

   if ($today == $senday) {

    echo "sent";

   } else {

    echo "not yet sent";

   }

现在,我可以使用 js,但我不确定这是否可行,这个 php 脚本是后端的全 php 页面。那么,我可以只使用 php 吗?喜欢使用睡眠功能?或其他人

我不知道用是最好的方法。

(具体来说,它是一个发送电子邮件的系统,记得在网站上留下推荐。)

谢谢

【问题讨论】:

  • 如果没有像 cronjob 这样的任务调度程序,要实现这样的目标将非常困难。
  • 真的没有其他方法可以发送延迟邮件吗?使用睡眠可以工作吗?或 time_sleep_until。我尝试使用它,但目前没有成功。我真的不知道!
  • @MarcoRomano 你想让程序休眠 240 天吗?那会杀死你的服务器。您必须使用 cron 作业或其他一些安排它的方式。没有其他出路。将任务保存到数据库,然后让 cron 作业从中挑选任务。
  • Cron 将每 N 秒运行一个 php 脚本。创建脚本以检查要发送的电子邮件,然后安排它以给定的时间间隔运行。注意:cron 是 linux o/s 功能,而不是 PHP 功能...
  • @MarcoRomano 您可以安排 cron 每分钟或每年运行一次。尝试一些在线 cron 工具以更好地理解,例如 crontab.guru

标签: javascript php email


【解决方案1】:

你可以做到这一点,

  1. 当您拥有用户的数据时,您就知道特定用户是在哪一天注册的。

  2. 编写一个每天都会执行的脚本,并选择所有用户在 5 天前注册的。邮件将发送到该日期匹配的所有用户。

  3. 脚本将继续执行,直到在该日期处理完最后一个用户。

【讨论】:

  • 我有用户注册的日期。所以,我可以在 cronjob 发送电子邮件之前过滤用户,你的意思是这个吗?这可能很有趣。
  • @MarcoRomano 是的...这样只会选择 5 天前注册的用户。
猜你喜欢
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
  • 2016-12-12
  • 2012-02-14
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 2018-02-26
相关资源
最近更新 更多