2011-01-08 10 views

回答

1

如果沒有任何外部行爲,則無法啓動腳本。

如果你的文件服務器有SSH或HTTP服務器或類似的東西,你可以在另一臺服務器上配置cron作業通過SSH/HTTP /類似的東西,開始你的腳本。

此外,您還可以創建PHP腳本,它會做睡在一個循環中的所有時間,醒來,做一些工作只有在當前時間是附近的一些特定的值。您必須更正php腳本的最大執行時間(有關詳細信息,請參閱here),並且您必須在服務器啓動時啓動腳本。順便說一句,這看起來不是很好的解決方案。

1
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請求重新啓動守護進程。醜陋,但功能齊全。你也會處理時間限制,小心!

1

我同意凱爾的回答。

如果你的服務器不支持它,你可以試用一個免費的cronjob服務。

只是谷歌找到了前兩個,有可能是,如果你搜索一個多一點。

0

好吧,如果這是一個公共的網絡服務器上,你有足夠的訪問,你總是可以使用它們來運行代碼來檢查給定值,說一天的時間,次數一個文件編號已被訪問(或將你的號碼存儲在一個文件中)。只需把你的php代碼放在網頁的頂部。

+0

對不起,沒有閱讀「沒有任何外部行爲」。 – AJJ 2011-01-08 11:28:21

1

如前所述,這是不可能的字面上「沒有外部行爲」。

我在ThinkUp軟件中找到了一個很好的解決方案(不知道這是用在哪裏)來使用RSS閱讀器。從簡單的角度來看,這可能是最好的選擇。

這個想法是,您每使用XX小時(或任何您想要的時間間隔)使用您的閱讀器自動調用腳本。當被調用時,這個腳本執行維護任務或者你想要做的任何事情。

爲了確保不是每個人都可以運行該腳本並導致服務器崩潰(我認爲這是一項有點繁重的任務),您可以使用一個附加的唯一長標識符字符串作爲URL參數,以確保該腳本只會被你打電話。

除此之外,您可以使用其他答案中建議的「窮人的」web cron作業服務之一。