2013-07-14 157 views
3

每個小時從12:30開始(並持續到1:30,2:30等),我的應用程序將發佈靜態推文。我目前使用的是馬特里斯的twitter API。我也有一個cron工作。Cron Job + Twitter

30 * * * * php -q /home1/USER_NAME/public_html/twitter/index.php 

我遇到的問題是,PHP代碼的工作,當我手動刷新的index.php &我的cron作業半的作品。我從我的cron作業收到的這封電子郵件是:

Error 200 

我想知道的是,怎樣才能讓我的cron來工作嗎?我的cron工作沒有任何錯誤。

include 'tmhOAuth/tmhOAuth.php'; 

$tmhOAuth = new tmhOAuth(array(
    'consumer_key' => 'XXX', 
    'consumer_secret' => 'XXX', 
    'user_token' => 'XXX', 
    'user_secret' => 'XXX', 
)); 

// Bahrain's time zone 
date_default_timezone_set ('Asia/Riyadh'); 

// Set status message 
$timezone= date("g:i"); 
$tweetMessage = "It's now" .$timezone. "in Bahrain"; 

//Response 
$response = $tmhOAuth->request('POST', $tmhOAuth->url('1.1/statuses/update'), array('status' => $tweetMessage)); 

//Do something if the request was unsuccessful  
if ($response != 200) { 
    echo 'Error 200'; 
} 
+1

錯誤發生後'$ tmhOAuth-> response'的內容是什麼?請參閱https://github.com/themattharris/tmhOAuth/blob/master/tmhOAuth.php#L805 –

回答

1

嘗試:

30 * * * * /usr/bin/php '/home1/USER_NAME/public_html/twitter/index.php' 

這是正確的語法,但它看起來像你的代碼實際上是希望從一個頁面上,如果使用的cron這是行不通的響應。

你可以像下面說的那樣做,並使用wget獲取實際的URL,或者另一個選項是使用Curl實際發佈並請求該URL。如果你使用Curl,你可以使用標準的cron,因爲Curl實際上會收到響應。

+0

使用JustHost,他們設置自己的cron作業的方式與此類似: _ _ _ _ _ | _ | | _ | | _ | | _ | | _ | 命令:--- 5個框表示分鐘,小時,每天,每月,每年(這是下拉菜單) 命令行是一個簡單的在我的腳本的位置,在這種情況下「www.domainname .com/twitter/index.php「 –

+0

雅,我認爲許多主機都是這樣的,它讓我感到困擾。我不喜歡這種方法,因爲這會將你的cron作業放在可公開訪問的頁面上,任何碰巧請求該頁面的人都在運行該腳本。如果是這樣的話,有時我會傳遞一個參數給腳本,比如www.domainname.com/twitter/index.php?arg1=121。通過腳本內部的這種方式,您可以驗證某人不只是打開該頁面.../twitter/index.php並運行cron。我認爲一般來說,更好的做法是讓自己的作業不是在您的網絡服務器上提供的頁面,並將它們放在另一個文件夾中。 –

+2

嗯,我已經解決了這個問題,一切都很好,只是我的命令不是。我使用的命令是: wget -O/dev/null -q http://www.DOMAINNAME.com/twitter/index.php –