2

背景:

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

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

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

我的问题:

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

1 回答 1

0
  1. 不,您的精度不需要精确到秒,它不需要在.sh脚本或小型侦听器上运行。

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

    脚本.sh

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

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

  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使用在其他位置定义的设置,效率将取决于您的邮件服务器/服务的效率。

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

于 2013-07-13T06:18:41.953 回答