2011-12-30 85 views
0

我发现了一些“代替cron的php代码”我是一个PHP的总noob,所以这个代码在我的情况下工作吗?她的片段:替代cron的PHP代码

<?php 

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

?> 

我试图推迟脚本发送电子邮件。这里是电子邮件脚本:

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

$headers = "From: Memory Jet <[email protected]>\r\n"; 


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

} ?> 
+4

我不明白你怎么可以称之为cron的替代品。如何解释你想要达到的目标。对于简单的延迟,你可以使用sleep() – 2011-12-30 23:09:57

+0

不,它不会工作(单独),但我想,这不是你真正的问题。 – KingCrunch 2011-12-30 23:10:43

+0

这将是一个很大的延迟,所以睡眠不起作用。 – 2011-12-31 00:37:38

回答

2

,你需要插入整个第二代码片段(减去标签)到在第一部分中说://执行一些脚本。您还需要定义变量$ time和$ interval

话虽如此,我同意其他海报,这不是cron的实际替代。 Cron是您可能在Windows中作为计划任务知道的* nix版本。基本上你写一个脚本并使用cron来安排它(没有以后的人为干预)。另一方面,您的文章中提供的“替代”仅适用于您(或其他人)手动运行PHP脚本(例如通过Internet访问它)的情况。

1

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

这里有一对夫妇的方法,一个网站,你可以用它来做到这一点:如果你想使用你提供的代码http://www.thegeekstuff.com/2011/07/php-cron-job/

2

对于cron的PHP“Alternative”,将其保存为主机上的脚本并执行一次。它会太长,一旦调用自己每一秒,如果内部处理需要更长的时间,这将需要更长的时间一样,所以在后台叉的任务,使他们不妨碍脚本执行:

<?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,这是值得的。对于修补,没关系。