Можно ли делать пакетные вызовы POST API? - PullRequest
0 голосов
/ 01 апреля 2012

Я пишу приложение, которое делает ежедневную публикацию от имени пользователя, и, сравнив PHP-код, который это делает, кажется, что на пользователя уходит около двух секунд. Я делю работу на куски и использую несколько заданий cron для выполнения каждого чанка. Я бы хотел масштабировать до многих тысяч пользователей за один день, но такая нагрузка слишком велика. Мой сервер мог бы буквально весь день отправлять сообщения каждому пользователю по одному, используя этот метод.

Как люди обычно делают это? Я видел другие приложения, которые делают это. Есть ли способ отправить все эти сообщения сразу, используя всего один вызов API? Использование отдельных вызовов API для каждого пользователя очень медленное.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Вы можете использовать пакетный запрос для достижения того, что вам нужно.

Код для пакетного запроса указан ниже. Подробнее о пакетном запросе 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');
0 голосов
/ 01 апреля 2012

С одной стороны, это полностью зависит от API.

Однако вы можете использовать многопоточный или псевдопараллельный подход к этому, чтобы ваша программа отправляла, скажем, 100 запросов HTTP POST за раз, а не генерировала один запрос за другим последовательно.

Поскольку вы используете PHP, многопоточность отсутствует (я думаю), но этот вопрос очень похож на другие. Например, посмотрите , как эти люди рекомендуют curl_multi .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...