2012-04-01 14 views
0

私はユーザーとして毎日の投稿を作成し、これを行うPHPコードをベンチマークしたアプリケーションを書いています。ユーザーあたり約2秒かかると思われます。私は仕事をチャンクに分割し、複数のcronジョブを使って各チャンクを実行しています。私はいつか何千ものユーザーに拡張したいと思っていますが、この種の作業負荷はあまりにも大きすぎます。私のサーバーは文字通り、この方法を使用して一度に1人ずつ各ユーザーに投稿するようになりました。バッチPOST API呼び出しを行うことは可能ですか?

どのように人々はこれを通常行うのですか?私はそれを行う他のアプリを見てきました。 1つの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'); 
関連する問題