知道這是一個非常古老的線程,但有些人可能會遇到,所以這裏是另一個建議。
此,如果只會工作:
- 您是Linux服務器
- 可以通過命令上(象exec,一些共享主機不會允許這種)
睡覺,而不是很長一段時間,我認爲這是一個糟糕的做法(對於這種情況),您可能會考慮使用at命令。
雖然cron作業是重複性工作的理想選擇,但如果您只想在未來某個特定時間運行一次命令,那麼at
是您最好的朋友。
這就是我要如何在用戶與網頁互動後發送電子郵件X的時間。
例子:
$wait_time=time()+mt_rand(3600,36000);
//wait a random amount of time between 1 and 10 hours
//$wait_time=time()+1200 -if you want 20 minutes exactly.
$cmd_string=escapeshellcmd('php /path/to/script.php '.$par1.' '.$par2.' "'.$par3.'" '.$parX);
exec("echo -e '$cmd_string' | at ".date("Hi M d",$wait_time));
比你創建負責處理所有傳遞的參數,做任何你想做的script.php。
因此,如果我的託管服務信譽良好(例如,godaddy),我可能不必擔心內存問題?謝謝你的幫助! – Dustin 2010-03-04 04:55:34
在您的PHP serverside腳本中使用sleep函數並不是一個好主意。你在睡覺時正在浪費一個網絡服務器線程。另外,如果你睡得太久,服務器將會阻止你的進程,或者用戶的瀏覽器超時並放棄。 正確的做法是使用cronjob或獨立進程。 – Vlad 2010-03-04 05:04:27
你也會爲自己的DoS攻擊敞開大門。有些混蛋可能會在一分鐘內註冊幾百個帳號,而睡眠Apache線程會佔用你所有的內存。 – 2010-03-04 05:29:18