【问题标题】:Newsletter send using AJAX to avoid PHP timeout使用 AJAX 发送时事通讯以避免 PHP 超时
【发布时间】:2012-01-08 09:46:41
【问题描述】:

我需要发送时事通讯。我已经有一个可以发送大量电子邮件的 PHP 脚本,但是由于 PHP 最大脚本运行时间,它不会在电子邮件数据库不断增长的情况下工作。

所以,为了避免这种情况,我想出了一个解决方案:我会在 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>

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

【问题讨论】:

    标签: php javascript ajax newsletter


    【解决方案1】:

    是的,这会起作用。但你也可以使用 PHP set_time_limit 函数,但有些主机更喜欢阻止它。

    【讨论】:

      【解决方案2】:

      您可以使用set_time_limit(0) 让您的脚本根据需要运行。

      【讨论】:

      • 谢谢,我不知道这个功能,但实际上,它被我的托管服务提供商阻止了
      【解决方案3】:

      使用 AJAX

      当然你可以使用 AJAX 来做到这一点,但在这种情况下你还应该确保 error 参数也被定义.ajax() 函数在@987654321 @。即使之前的调用返回了一些错误(例如 PHP 脚本中的错误或其他错误),它也会确保调用脚本。

      使用 Cron 作业

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-10
        • 2020-12-15
        • 2012-02-25
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        • 2012-03-08
        • 1970-01-01
        相关资源
        最近更新 更多