2014-01-23 100 views
0

我沒有太多經驗運行大型網站,但我正在開發一個項目,該項目需要基本上不間斷地運行服務。該服務將通過API收集信息,由於我收集的數據量很大,每4個小時左右就會運行400次請求。如何在網絡服務器上每分鐘運行一次服務

在我使用cron作業來運行執行必要功能的php腳本之前,我不確定這是否是處理這些請求數的有效方法。

大型網站使用什麼來解決這類問題?

我能想到的最好的方法是創建一個不間斷運行的自定義應用程序。還有其他解決方案嗎?

我打算使用Linux服務器,我有什麼選擇,它會需要專用服務器嗎?

+0

你能寫一個腳本來運行400個請求並每4個小時運行一次嗎? – 9000

+0

根據我的經驗,腳本需要1-2秒才能運行每個請求,因此它將運行400秒或約13分鐘。我不確定這是否會給服務器帶來太大的壓力。在小型網站上,我每分鐘都會遇到運行cron作業的麻煩。我收到我使用太多資源的通知。在這個項目中,我期待升級到專用服務器或VPS,但我正在尋找需要最少量資源的選項。 – Rawr

+0

服務會有什麼不同?它會做同樣的工作,我想? – Behe

回答

0

您需要使用Apache風格的Pre-Forked模型,其中您有一個監督程序進程,可以分派N個工作進程,並處理SIGCHLD等。子進程將連接到作業隊列,並阻止等待工作要交給他們。

作業隊列通常類似於redis隊列,您可以將作業數據抽入到該隊列中。

完成的工作通常通過與jobid不同的隊列反饋,然後由一個單獨的任務收集,然後完成「某些工作」(將結果保存到某處,將結果傳遞到不同的隊列以執行不同的工作工作等)。

請參閱http://python-rq.org/docs/ & http://gearman.org/作爲示例框架。

相關問題