时事通讯使用AJAX发送以避免PHP超时

时间:2011-11-29 00:20:37

标签: php javascript ajax newsletter

我需要发送简讯。我已经有一个发送大量电子邮件的PHP脚本,但由于PHP max脚本运行时间,因为电子邮件数据库不断增长,它将无法正常工作。

所以,为了避免这种情况,我想出了一个解决方案:我会在javascript中使用AJAX调用我的PHP脚本,并且我会给它$ _GET参数一个计数20,所以脚本只会发送20封电子邮件。比AJAX会收到成功响应,并一次又一次地调用我的脚本,直到发送所有电子邮件。

有可能吗?我问,因为我从来没有见过这样的解决方案,所以我想知道它是否真实(这有点难以实现我的PHP框架,所以我先问这里的专家)

总结一下这是一个代码框架:

<script>
var emailCount = 1000; //would get this from DB
var runCount = 20; //number of emails sent in one cycle
var from = 0; //start number
function sendMail(){
    if(from<emailCount){
        jQuery.ajaxfunction({
            path: 'script.php?from='+from+'&count='+runCount
            successFc: function(){
                from+=runCount;
                sendMail();
            }
        })
    }
}
sendMail();
</script>

那么,有什么障碍吗?非常感谢。

3 个答案:

答案 0 :(得分:3)

使用AJAX

当然您可以使用AJAX 来实现,但在这种情况下,您还应确保error参数也已定义 .ajax() jQuery (see documentation)中的函数。即使前一个调用返回了一些错误(例如PHP脚本中的错误或其他错误),它也会确保调用脚本。

使用Cron作业

另一个想法是使用 CRON作业,它会以恒定的间隔调用您的脚本,您不需要浏览器一直运行。 See more about Cron。如果您需要Windows解决方案(Cron是基于Unix的),您可以使用例如Cron for Windows

答案 1 :(得分:1)

是的,这将有效。但您也可以使用PHP set_time_limit函数,但有些主机更喜欢阻止它。

答案 2 :(得分:1)

您可以使用set_time_limit(0)让脚本运行所需的时间。