PHP代码替代cron

时间:2011-12-30 23:05:48

标签: php email 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>\r\n";


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

} ?>

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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,这是值得的。对于修修补补,没关系。

答案 2 :(得分:1)

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

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