我正在编写一个以用户身份每日发布的应用程序,并对执行此操作的PHP代码进行基准测试,每个用户似乎需要大约两秒钟。我正在将工作划分为块,并使用多个cron作业来完成每个块。我希望有一天能够扩展到成千上万的用户,但这种工作负载太多了。我的服务器整天都需要使用这种方法一次一个地发布给每个用户。
人们通常如何做到这一点?我见过其他应用程序。是否有一些方法可以使用一次API调用立即发送所有这些帖子?每个用户使用单独的API调用非常慢。
感谢。
答案 0 :(得分:0)
一方面,这完全取决于API。
但是,您可以使用多线程或伪并行方法,以便您的程序一次发送100个HTTP POST请求,而不是一个接一个地生成一个请求。
由于您使用的是PHP,我认为多线程已经出局了,但这个问题与其他问题非常相似。例如,请参阅how these folks recommend curl_multi。
答案 1 :(得分:0)
您可以使用批量查询来实现您的需求。
批量查询的代码如下所述。您可以在http://25labs.com/tutorial-post-to-multiple-facebook-wall-or-timeline-in-one-go-using-graph-api-batch-request/
中详细了解Facebook批量查询$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');