在剧集播出时发送电子邮件

时间:2013-07-13 06:09:10

标签: php perl email cron

背景

我正在制作一个网站,列出当前和即将到来的季节的电视节目,并在每个节目的下一集完成倒计时。对于这些节目,我有一个节目表和一个相应剧集表(每集一行,每个都有正确的播出日期)。

现在,我还想允许用户选择加入他们选择的任何系列的电子邮件更新。所以,我有一个包含电子邮件的表格以及要发送到该电子邮件的系列更新。电子邮件将是简单的通知,例如“此类系列已于今年秋季宣布推出。”或“此类系列的第3集现已推出。”

我相信我可以创建一个脚本,可以找到在过去30分钟内播出的剧集,然后通过电子邮件发送给任何选择通知的人发送电子邮件。但是,我不确定如何自动完成实际执行。我希望尽可能接近发送电子邮件的时间,而不是每周综述。这些节目是外国的,这意味着由于奇怪的播出时间,我将无法自己执行剧本,不过我还是喜欢自动化。

我的问题:

  1. 在我的各种搜索中,我遇到了cron的工作 - 这真的是最好的方法吗?
  2. 每30分钟运行一次是个坏主意吗?
  3. 我的网站目前正在使用PHP,但从我读过的内容来看,发送电子邮件的效率很低。那么,Perl会成为用于发送电子邮件的好语言吗?如果没有,我应该使用哪种语言? (理想情况下,这是一种更常见且成熟的语言)

1 个答案:

答案 0 :(得分:0)

  1. 没有。您的精确度不需要精确到秒,它不需要在.sh脚本或小听众上运行。

    但是,如果您打算让更新更准确,可以使用以下内容:

    script.sh

    #!/bin/sh
    while [ 1 ]
    do
        php -q "/path/to/mail.php"
        sleep 5000
    done
    

    在此示例中,您可以每隔五秒钟调用一次脚本。

  2. 没有。如果你已经编写PHP脚本来有效地循环通过数据库(例如,不使用php循环,但使用sql连接),那么以较低的间隔运行脚本也会有效。

    PHP循环意味着:

    foreach ($users as $user) {
        $mysqli->query("SELECT `shows` FROM `user_shows` WHERE `id`=".$user->id);
    }
    

    SQL Join会更好。

    SELECT `shows` FROM `user_shows` JOIN `users` ON user.id = user_shows.user_id;
    
  3. 没有。 mail使用在其他位置定义的设置,效率将取决于您的邮件服务器/服务的效率。

    此外,您甚至不需要在PHP中使用默认的mail函数。您可以使用PHPMailer或第三方服务,例如FeedBurner