由於我的服務器不支持cron作業,我希望我的服務器中的文件每天在特定時間觸發它的操作..方法來觸發從服務器的特定時間表的php腳本,而不使用cron作業設施
請讓我知道在沒有任何外部行爲的情況下,是否可以在特定時間從服務器端運行腳本。
由於我的服務器不支持cron作業,我希望我的服務器中的文件每天在特定時間觸發它的操作..方法來觸發從服務器的特定時間表的php腳本,而不使用cron作業設施
請讓我知道在沒有任何外部行爲的情況下,是否可以在特定時間從服務器端運行腳本。
如果沒有任何外部行爲,則無法啓動腳本。
如果你的文件服務器有SSH或HTTP服務器或類似的東西,你可以在另一臺服務器上配置cron作業通過SSH/HTTP /類似的東西,開始你的腳本。
此外,您還可以創建PHP腳本,它會做睡在一個循環中的所有時間,醒來,做一些工作只有在當前時間是附近的一些特定的值。您必須更正php腳本的最大執行時間(有關詳細信息,請參閱here),並且您必須在服務器啓動時啓動腳本。順便說一句,這看起來不是很好的解決方案。
if (rand(0,100)==0){
if (!file_exists($tf='tmp/job.crontime') || (time() - filemtime($tf))>(60*60*24)){
... # your tasks
touch($tf);
}
}
這個簡單的&愚蠢的腳本使用一個文件來存儲的最後一份工作,ecexution的時間。如果>60*60*24
已通過 - 它將啓動工作代碼。 rand(0,100)
應該降低檢查每個請求上的作業的開銷:1/100
是運行你的工作的機會。
把它放在'index.php'的末尾。在項目modelate高負荷:))
很大的缺點,不要使用:它不會運行,如果你沒有任何遊客。
UPD:編寫無限期運行,每隔30s確實touch('tmp/job.crontime')
彙報還活着的腳本。它還應該檢查當前時間&執行操作。
在index.php文件,如果超過30歲已經過去了 - 與HTTP請求重新啓動守護進程。醜陋,但功能齊全。你也會處理時間限制,小心!
好吧,如果這是一個公共的網絡服務器上,你有足夠的訪問,你總是可以使用它們來運行代碼來檢查給定值,說一天的時間,次數一個文件編號已被訪問(或將你的號碼存儲在一個文件中)。只需把你的php代碼放在網頁的頂部。
如前所述,這是不可能的字面上「沒有外部行爲」。
我在ThinkUp軟件中找到了一個很好的解決方案(不知道這是用在哪裏)來使用RSS閱讀器。從簡單的角度來看,這可能是最好的選擇。
這個想法是,您每使用XX小時(或任何您想要的時間間隔)使用您的閱讀器自動調用腳本。當被調用時,這個腳本執行維護任務或者你想要做的任何事情。
爲了確保不是每個人都可以運行該腳本並導致服務器崩潰(我認爲這是一項有點繁重的任務),您可以使用一個附加的唯一長標識符字符串作爲URL參數,以確保該腳本只會被你打電話。
除此之外,您可以使用其他答案中建議的「窮人的」web cron作業服務之一。
對不起,沒有閱讀「沒有任何外部行爲」。 – AJJ 2011-01-08 11:28:21