【问题标题】:PHP code alternative to cronPHP 代码替代 cron
【发布时间】:2011-12-30 23:05:48
【问题描述】:

我发现了一些“替代 cron”的 php 代码她是sn-p:

<?php

if (($last + $interval) >= time()) {
// execute some script(s)
}

?>

我正在尝试延迟发送电子邮件的脚本。这是电子邮件脚本:

<?php    
if(isset($_POST['email']))
{

 $headers = "From: Memory Jet <your_company@example.com>\r\n";


$to_visitor = $_POST["email"];
$common_data = $_POST["message"];
mail($to_visitor, "Your Memory", $common_data, $headers);

} ?>

【问题讨论】:

  • 我不明白你怎么能把它称为 cron 的替代品。如何解释你想要达到的目标。对于简单的延迟,您可以使用 sleep()
  • 不,它不会工作(单独),但我想,这不是你真正的问题。
  • 这将是一个很大的延迟,所以睡眠不起作用。
  • 你可以更好地解释这个问题;那么你会得到更好的答案。
  • 你说得对,对不起。我想在由该代码确定的特定时间发送此电子邮件。我怎样才能得到它,以便在一定时间内发送这封电子邮件?

标签: php email cron


【解决方案1】:

如果您想使用您提供的代码,您需要将整个第二个代码 sn-p(减去标签)插入到第一个部分中它说://执行一些脚本。您还需要定义变量 $time 和 $interval

话虽如此,我同意其他发帖人的观点,即这不是 cron 的实际替代方案。 Cron 是您可能知道的 Windows 中计划任务的 *nix 版本。基本上,您编写一个脚本并使用 cron 来安排它(无需后期人工干预)。另一方面,您帖子中提供的“替代方案”仅在您(或其他)手动运行 PHP 脚本(例如通过 Internet 访问它)时才有效。

【讨论】:

    【解决方案2】:

    cron 的 PHP“替代方案”,将其保存为主机上的脚本并执行一次。它会每秒调用一次自己,如果内部处理需要更长的时间,它也会需要更长的时间,所以在后台分叉你的任务,这样它们就不会阻碍脚本太长时间执行:

    <?php
    header("X-PHP-CRON-STATUS: failure.");
    isset($_SERVER["HTTPS"]) || die('failure.');
    ignore_user_abort(true);
    set_time_limit(0);
    header("Content-Length: 8");
    header("Connection: close");
    header("X-PHP-CRON-STATUS: started.", 1);
    echo 'started.';
    flush();
    
    /* run cron jobs in background / HTTP "background" script like this one */
    
    
    $each = 1; /* second(s) */
    $sofar = microtime(1) - $_SERVER['REQUEST_TIME'];
    if (0 < ($wait = $each - $sofar))
    {
        usleep($wait * 1000000);
    }
    
    $uri = 'http' . ($_SERVER["HTTPS"] ? 's' : '') . '://' . $_SERVER["SERVER_NAME"];
    !$_SERVER["SERVER_PORT"] == "80" && $uri .= ':'.$_SERVER["SERVER_PORT"];
    $uri .= $_SERVER["REQUEST_URI"];
    file_get_contents($uri);
    

    像这样的脚本非常脆弱,所以最好得到一个真正的 cron,这是值得的。修修补补,没关系。

    【讨论】:

      【解决方案3】:

      例如,Cron 将用于在每天的特定时间发送电子邮件。为此,您可以在 PHP 应用程序之外编写某种脚本,并实际使用 CRON 来安排它。

      这是一个网站,您可以使用几种方法来执行此操作:http://www.thegeekstuff.com/2011/07/php-cron-job/

      【讨论】:

        猜你喜欢
        • 2016-02-16
        • 2017-03-23
        • 2010-09-22
        • 2015-03-14
        • 1970-01-01
        • 2011-05-04
        • 1970-01-01
        • 2020-12-18
        • 2018-08-24
        相关资源
        最近更新 更多