我正在创建一项服务,用户提交存储在 MySQL 数据库或文本文件中的数据,并在每周的特定时间通过电子邮件发送到特定地址。
我知道这不是 PHP 的用途,而且我读过一个叫做 Cron 的东西可以完成这项工作,但我想知道是否还有其他选择?是否有一个脚本可以从 Gmail 发送,可能带有粘贴或附加的数据?
我正在创建一项服务,用户提交存储在 MySQL 数据库或文本文件中的数据,并在每周的特定时间通过电子邮件发送到特定地址。
我知道这不是 PHP 的用途,而且我读过一个叫做 Cron 的东西可以完成这项工作,但我想知道是否还有其他选择?是否有一个脚本可以从 Gmail 发送,可能带有粘贴或附加的数据?
最好的方法是使用 Cron 作业。如果由于某些原因您无法使用它们,那么您可以使用thecloudblocks.com的服务来安排作业。
或者,您可以创建一个函数来休眠,直到工作时间到来。喜欢,
function do_some_job_at($time){
time_sleep_until($time);
JOB();
}
do_some_job_at(time() + 20); //Runs job after 20 seconds.
我只能想到两种方式来做到这一点:
有一个 cron 作业每 x 分钟调用一次发送脚本
$database->query("SELECT * FROM `mail_queue` WHERE `time` < " . time());
while($object = $res->fetch_object()){
mail($object->to, $object->subject, $object->message, "FROM: xpto@domain.com");
}
(如果您使用的是虚拟主机帐户,您可以简单地在控制面板上创建它)
* * * * * /bin/php complete_path_to_your_php_script.php
让脚本在循环中运行(不可靠,因为它可能由于超时、错误、内存中断......而停止工作)
如果您需要始终运行 php 脚本,那么我建议您使用 upstart 作业/服务