2009-06-24 87 views
0

我目前在MySQL中保存了一些Twitter數據。我的主機只允許我每小時運行一次cron作業,因此爲了模擬實時結果,我已經複製了同一個文件6次,並且每10分鐘運行一次(主機允許您控制小時偏移量)。我認爲這很愚蠢。從Twitter獲取我想要的數據的最佳方式是什麼?

是否有一些機制我可以瞭解到,這將推動我的數據?任何想法或建議的歡迎。

(我從剛詢問他們的服務器在每個頁面視圖帶領自己走,我都清楚,這是不良的做法)

回答

1

如何訪問一個網頁(這將反過來執行程序)託管在通過客戶端(家庭系統)增加的cron服務器:

/usr/bin/curl http://yourserver.com/twitter 

否則,您可以運行以下的bash腳本每隔一小時:

#!/bin/bash 

for ((i = 0; i < 6; i += 1)); do 
    /usr/bin/curl 'http://yourserver.com/twitter' 
    sleep 600 
done 
0

一相對簡單的解決方案是在另一臺計算機上運行cron作業。它會向Twitter發送請求,然後執行HTTP POST到服務器上的指定頁面(例如http://foo.com/latestTwitterData)。當然,你會想要進行身份驗證,以防止隨機垃圾發送給你。

我不知道這是否適合您的情況。

-1

每秒鐘左右運行代碼非常簡單。

// pseudocode 
while(1) { 
    // do request 

    // sleep 1 second 
    sleep(1); 
} 
+0

這是如何回答這個問題的?他不允許運行守護進程。毫無疑問,任何無限運行的進程都會被他的ISP殺死。 – 2009-06-24 03:40:41

+0

問題中指定的內容在哪裏? – 2009-06-24 04:04:44

-1

爲什麼不把一個while循環放到你的程序中,然後在你需要更新的時間之間睡了N秒?你可以在59分30秒後死亡。

或者,爲了優化多個文件的複製,您可以在單個cron行中向您的程序添加多個調用。喜歡的東西:

./prog.pl; sleep 60; ./prog.pl

1

可以三立拉從您的請求觸發Twitter的數據。這有點深奧,但基本上你可以將鎖定數據存儲在表中,以確保只有一個請求每隔N分鐘(或者每當你需要它時)就從twitter上查詢數據。例如:

  1. 請求檢查,看是否需要新的Twitter數據被檢索
  2. 檢查鎖表,看看另一個請求已經說話嘰嘰喳喳
  3. 添加記錄鎖定表。確保在通過數據庫約束設置爲唯一的列中指定數據。這會阻止你製作兩把鎖。
  4. 與twitter對話,保存twitter數據。
  5. 刪除鎖記錄

對於速度,保證你的鎖表是在內存或使用memcached來代替。當然,如果你可以使用memcached,你可能完全控制cron。 :)

相關問題