Cron选项卡没有运行重新加载页面的{javascript

时间:2017-07-24 16:14:41

标签: javascript php cron

我有一个php文件,可以发送电子邮件给我们期待它的客户,并减轻服务器的负担,并消除它看起来像垃圾邮件服务器,我们每20秒将流量减少到40封电子邮件。这是通过使用javascript每20秒重新运行页面来完成的。页面本身从数据库中读取并获取接下来的40个电子邮件地址,发送它们,然后循环使用直到所有发送完毕。然后,电子邮件列表将在三周后从下一个周期的重复表中重新加载。

以下是由cron作业启动时似乎无法运行的javascript代码

<script language="JavaScript" type="text/javascript">
            setTimeout("location.href = \'PT_enrollment.php?sendDate='.$sendDate.'\'",20000); // milliseconds, so 10 seconds = 10000ms
            </script>

当我从浏览器运行它时,它确实运行正常,所以我猜它是在Cron Job功能中。

我错过了什么?我需要在crontab或服务器上设置一个设置或参数,以便正确运行吗?

2 个答案:

答案 0 :(得分:1)

你可以让你的PHP进程在20秒内休眠:

$emails = // retrieve all emails from database
$done = 0;

foreach ($emails as $email) {
    // send email to $email

    $done++;
    if ($done % 40 == 0) { // every 40 emails
        sleep(20); // wait 20 seconds
    }
}

通常,cron作业通过php-cli在服务器端运行,默认情况下没有超时。一些托管服务提供商通过wget或curl实际检索URL来运行cron作业,在这种情况下,您必须考虑可能的超时。在这种情况下,您可以将set_time_limit(0);添加到脚本中以解决此问题。

答案 1 :(得分:0)

我不知道你是如何运行的..服务器不会运行JavaScript 如果您将JavaScript添加到文件test.php 你可以运行像

这样的东西
file_get_contents('https://yourdomain.com/test.php');

这会像你在浏览器上运行一样点击文件

或重写您的PHP语言任务,如

$url = 'https://yourdomain.com/PT_enrollment.php?sendDate='.$sendDate;
file_get_contents($url);