PHP定时机制

PHP定时机制,php,time,Php,Time,例如,我想每天8:00发送电子邮件,收件人和内容都在我的数据库中。我知道PHP中有一种方法可以像 ignore_user_abort(); set_time_limit(0); $interval=60*30; do{ //do sleep($interval); }while(true); 然而,这不是一个明智的方式。PHP中是否有更好的计时机制?如果你能给我举个例子,我将不胜感激。 谢谢 在这个场景中,PHP看起来不是您想要的。PHP代码只能在用户访问您的网站时运行。虽然P

例如,我想每天8:00发送电子邮件,收件人和内容都在我的数据库中。我知道PHP中有一种方法可以像

ignore_user_abort();
set_time_limit(0);
$interval=60*30;
do{
    //do
    sleep($interval);
}while(true);
然而,这不是一个明智的方式。PHP中是否有更好的计时机制?如果你能给我举个例子,我将不胜感激。
谢谢

在这个场景中,PHP看起来不是您想要的。PHP代码只能在用户访问您的网站时运行。虽然PHP完全能够发送电子邮件,但只有当用户打开网页时才会发送电子邮件

我认为您正在寻找的是服务器上的另一个程序,它将在指定时间发送电子邮件。有太多不同的选择,每一个都非常适合不同的目的

对于Mac的Linux,我认为这是一个很好的解决方案。Cron是一个非常简单的程序,可以相对轻松地安排命令的执行

我对Windows不太熟悉,但是@Mike W评论说应该

当然,现在你需要一个程序来发送电子邮件。再一次有很多很多选择。我相信快速的谷歌搜索会让你走很长的路。您可能想尝试寻找一种简单易学的脚本语言


如果您有一个收件人数据库,那么肯定有Python库能够访问它。我对您的设置了解不多,但在几乎任何编程语言中访问数据库都非常容易。

没有提到的方法睡眠($interval);不是很好,您必须使用作业调度程序,如Linux中的Cron、windows任务调度程序。

我认为最好使用
Cron
作业

您将在这里获得有关这方面的指导


添加以下行

0 8 * * * root $HOME/scripts/send_email.sh >> $HOME/tmp/out 2>&1
现在您应该创建send_email.sh脚本。大概是这样的:

#!/bin/bash
recipients="user0@domain.com user1@domain.com user2@domain.com"
subject="...Subject..."
cat $HOME/email_message | mail -s $subject $recipients
$HOME/email\u message
是您要发送的邮件(文件)

不要忘记为脚本授予执行访问权限:

chmod +x $HOME/scripts/send_email.sh

也许您需要考虑Linux使用<代码> CRON<代码> <代码> CRON<代码>。对于Windows,请使用任务计划程序。是的,请使用cron来运行所需的脚本。回答不错,不过链接会让它更出色;)谢谢,我想我需要配置SMTP和端口太,没有这封电子邮件无法发送。你知道我应该在哪里配置吗?
chmod +x $HOME/scripts/send_email.sh