2010-01-24 78 views
0

我不確定該主題是否適用於該問題......無論如何,假設我有一個網站,使用PHP或JSP完成,並且使用功能有限的便宜主機。更確切地說,我不擁有服務器,並且我無法按照自己的意願運行守護進程或服務。現在我想定期運行(比如每分鐘或兩次)執行某些統計。它們可能很耗時,所以我無法對每個訪問頁面的用戶重複計算。當用戶加載頁面時,我可以做一次計算,並且計算出足夠的時間已經過去了,但是在這種情況下,如果計算時間過長,響應時間可能會過長並且超時(這不可能是我不想運行這麼長的任務,但我正在考慮最壞的情況)。如何設置網站定期任務?

因此,考慮到這些成本問題,您會建議哪些解決方案?

+0

你使用什麼技術? – 2010-01-24 12:09:38

+0

打開的問題... Java和PHP都被認爲是儘管你可以建議你的 – gotch4 2010-01-24 12:44:29

回答

1

如果你選擇使用crontab,你將不得不多知道一些從他們執行你的PHP腳本。取決於你的PHP是作爲CGI執行還是apache模塊有效。有一個關於如何做到這一點的一個很好的文章:

http://www.htmlcenter.com/blog/running-php-scripts-with-cron/

如果您沒有訪問的crontab您的託管服務提供商(找到一個新的)還有其他的選擇。例如:

http://www.setcronjob.com/

將調用一個腳本在您的網站,遠程每X期..你有一個月我認爲,一旦延長。如果你拿他們的付費服務(根據頭版$ 5 /年),我想認爲你設置的工作,直到你取消他們或你的付費期限用完。

2

每個便宜的主機將支持crontabs。首先檢查託管軟件包。 如果沒有,請加載頁面,並通過AJAX啓動任務。這樣,您的響應時間不會受到影響,並且您可以在不同的線程中完成工作。

+0

嗯。不確定,因爲頁面加載時需要完成所有統計信息。無論如何,crontabs似乎很有趣。它會運行PHP腳本? – gotch4 2010-01-24 11:52:20

+0

是的,'crontabs'運行服務器可以運行的任何東西(腳本)在你的目錄中 – Pentium10 2010-01-24 11:53:16

1

在Java中,您可以創建一個Timer。它可以創建一個後臺線程,每隔一段時間執行一次給定的功能。

我的首選是在ContextListener.contextInitialized()方法中啓動Timer對象,但是您可能有更合適的位置。