2015-04-16 137 views
0

我有一個服務於RSS源的PHP網頁,但需要大約15-20秒才能生成響應(然後在服務器上緩存10分鐘以獲得更快的響應)。Cron作業時間表

我該如何設置此作業的cron作業時間?我有這個問題。我想如果我在10分鐘前打電話給它,它會運行緩存頁面,所以我不會得到最新的更新頁面,這是真的嗎?如果我在10分鐘後致電該頁面,那麼我將不得不等待15-20秒才能得到答覆?

我該如何設法讓這個過程在我得到更新的快速反應飼料?我還沒有嘗試過cron的工作,這是我第一次,所以我覺得這很困惑。

我的cron命令是:*/10 * * * * wget http//www.example.com/multifeed.php

是不是?

+0

你可以做一些像'*/10 * * * * php /path/to/script.php>/path/to/rss.xml'。您的cron通常使用'crontab -e'進行配置,但有些主機提供控制面板。是的,如果你每隔10分鐘緩存一次,那麼你的服務RSS將會在0-10分鐘之間的任何地方,這取決於你的cron觸發時間和用戶訪問時間。 – halfer

+0

(緩存通常是一個好主意,雖然15-20秒聽起來相當慢,你也可能希望解決這個問題)。 – halfer

+0

@halfer它從第三方網站提取Feed,所以我相信它需要這麼多來呼叫第三方頁面和服務。但問題是我應該何時調用php腳本來運行該頁面? – Roon13

回答

0

你將不會有一個完美的cron,它會盡快帶來新的數據,這是一個限制,你將不得不忍受我的想法。

我會做的是每2分鐘運行一次這個cron並嘗試獲取新數據,我會檢查最後一次更新是否與我已有的不同,如果是,更新文件,如果是不,什麼也不做,等待下一個cron。

此方法將提供至多兩分鐘的陳舊數據。

另一種方法是檢查興田文件的修改時間:http://php.net/manual/en/function.filemtime.php

基本上,我訪問你的網頁,我們檢查文件的修改時間,如果是大於10分鐘,我們獲取的最新數據,這一點,結合與cron一起,可以爲用戶提供一種總能看到新鮮數據的方式。如果信息的新鮮度不是那麼重要(你能忍受兩分鐘的陳舊數據嗎?),如果它不重要,只需運行兩分鐘的cron。

希望它有幫助。

+0

唯一需要注意的是第三方網站是否滿足每天來自單一來源的720個請求。這不是一個很好的負載,但是如果網站運營商在他們的日誌中看到頻繁和常規的IP地址,他們可能會傾向於阻止(特別是如果每​​個都需要15+秒的渲染)。最後,這取決於OP是否有權獲取。 – halfer

+0

我會試試你的方法。我希望它能爲我工作 – Roon13

+0

@halfer我從他們的網站獲取rss飼料我所做的是我將它們轉換爲全飼料,這就是爲什麼它需要15-20秒時間,我猜 – Roon13