2011-12-30 84 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,這是值得的。對於修補,沒關係。