PHP代码替代cron



我发现一些php代码是" cron的替代品"我是一个php新手,所以这个代码在我的情况下工作吗?下面是代码片段:

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

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

<?php    
if(isset($_POST['email']))
{
 $headers = "From: Memory Jet <your_company@example.com>rn";

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

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

话虽如此,我同意其他海报的观点,这不是cron的真正替代品。Cron是Windows中计划任务的*nix版本。基本上,您编写一个脚本并使用cron对其进行调度(不需要稍后的人为干预)。另一方面,文章中提供的"alternative"仅在手动运行PHP脚本(例如通过Internet访问)时才有效。

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

<?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,这是值得的。

Cron将用于,例如,每天在特定时间发送电子邮件。要做到这一点,你可以在PHP应用程序之外编写一个脚本,并实际使用CRON来调度它。

这里有一个网站,你可以使用几个方法来做到这一点:http://www.thegeekstuff.com/2011/07/php-cron-job/

最新更新