2012-01-10 45 views
1

我設法使用自定義應用程序將狀態張貼到牆上,但是我想要做的是計劃狀態,並將其發佈到給定的日期時間。如何使用php和cUrl來安排牆上張貼

問題是,當我關閉我的應用程序時,腳本被中止。 現在它工作,我正在使用ignore_user_abort(true)和sleep()。

我也使用set_time_limit(1),一旦給定的日期時間已過,所以腳本停止。

我覺得這是糟糕的編碼,想知道是否有更好的方法來做到這一點?

這是我現在使用的代碼:

<?php 
ignore_user_abort(true); 
$token=$_GET["access_token"]; 
$attachment = array(
    'access_token' => "$token", 
    'message' => "deze post moet om 14.14 online komen", 
    'name' => "testpost", 
    'link' => "http://myurl.be/", 
    'description' => "Write here your description", 
    'picture'=> "http://myurl/assets/images/layout/logo.png"); 

date_default_timezone_set('Europe/Belgrade'); 
$time= date('d/m/Y H:i'); 
if ("10/01/2012 14:14" < $time){ 
set_time_limit(1); 
$result = $facebook->api('/me/feed/','post',$attachment); 
}else{ 
sleep(60); 
$curl = curl_init(); 
curl_setopt ($curl, CURLOPT_URL, "https://www.myurl.com/tests/facebooklogin/post.php?access_token=".$token); 
curl_exec ($curl); 
curl_close ($curl); 
} 
print $result; 
?> 

回答

2

你可以存儲需要爲您的文章(文字,鏈接,描述等)的所有信息在數據庫(如MySQL),設置一個PHP腳本,通過cron定期調用,並獲取數據庫中所有需要在腳本執行時發佈的帖子。

但請注意,訪問令牌在幾小時/每天后或用戶更改其密碼後即會過期。除非您沒有「offline_access」權限,否則令牌永不過期。

+0

我有一個當前的生產應用程序,只是Bjorn在這裏寫的。這是你的答案。但是,即使用戶訪問令牌到期,Facebook也會對其進行「修復」。他們說如果你申請了publish_stream權限,就使用app訪問令牌。但是,如果用戶更改密碼,則他們需要重新驗證您的應用。 – DMCS 2012-01-10 18:20:12

+0

你在哪裏存儲訪問令牌,在會話中?因爲我真的不知道如何用cron運行腳本,並帶有一個參數。 – samn 2012-01-11 08:47:37

+0

只需將其存儲在數據庫中... – 2012-01-11 08:49:41