2012-04-01 178 views
0

我正在編寫一個應用程序,以用戶的身份進行每日發佈,並且對此PHP代碼進行基準測試,似乎每個用戶需要花費大約兩秒鐘的時間。我將工作劃分爲塊,並使用多個cron作業來完成每個塊。有一天,我想擴展到成千上萬的用戶,但這種工作負載太多了。這需要我的服務器每天都使用這種方法每次向每個用戶發佈一個消息。是否可以執行批量POST API調用?

人們通常如何做到這一點?我見過其他應用程序。是否有一種方法可以使用一個API調用立即發送所有這些帖子?每個用戶使用單獨的API調用非常慢。

謝謝。

回答

0

一方面,這完全依賴於API。

但是,您可以對此使用多線程或僞並行方法,以便您的程序一次發送100個HTTP POST請求,而不是一個接一個地發送一個請求。

由於您使用的是PHP,所以多線程出局(我認爲),但這個問題與其他問題非常相似。例如,請參閱how these folks recommend curl_multi

0

您可以使用批量查詢來實現您所需的功能。

批處理查詢的代碼如下所述。您可以參閱更多關於Facebook批量查詢:http://25labs.com/tutorial-post-to-multiple-facebook-wall-or-timeline-in-one-go-using-graph-api-batch-request/

$body = array(
     'message'  => $_POST['message'], 
     'link'   => $_POST['link'], 
     'picture'  => $_POST['picture'], 
     'name'   => $_POST['name'], 
     'caption'  => $_POST['caption'], 
     'description' => $_POST['description'], 
     ); 

$batchPost[] = array(
    'method' => 'POST', 
    'relative_url' => "/{ID1}/feed", 
    'body' => http_build_query($body)); 
$batchPost[] = array(
    'method' => 'POST', 
    'relative_url' => "/{ID2}/feed", 
    'body' => http_build_query($body)); 
$batchPost[] = array(
    'method' => 'POST', 
    'relative_url' => "/{ID3}/feed", 
    'body' => http_build_query($body)); 

$multiPostResponse = $facebook->api('?batch='.urlencode(json_encode($batchPost)), 'POST'); 
相關問題