Facebook 图表 API - 在 PHP 中获取帖子
Facebook Graph API - get Posts in PHP
我正在尝试从 Facebook 页面获取帖子。
我在 here 中做到了
问题是页面有点慢(加载需要 4 或 5 秒)
我正在使用 2 "foreach" 来获取数据,也许这就是问题所在。
这是我的代码:
$json_object = @file_get_contents('https://graph.facebook.com/'.$page_id.'/posts?limit=4&access_token=' . $access_token);
$fbdata = json_decode($json_object);
foreach ($fbdata->data as $post)
{
$postid = $post->id;
$json_object2 = @file_get_contents('https://graph.facebook.com/'.$postid.'/attachments?access_token=' . $access_token);
$fbdata2 = json_decode($json_object2);
foreach ($fbdata2->data as $post2)
{
$title = $post2->title;
$type = $post2->type;
$url = $post2->url;
$desc = $post2->description;
$desc = str_replace("\n", "<br>", $desc);
if (strlen($desc) > 200){
$desc = substr($desc, 0, 200) . '...<br>...<br><a href="'.$url.'" target="_blank">Ver mais</a>';
}
$imgsrc = $post2->media->image->src;
if ($type=="note") {
?>
<div class="wrapper">
<a href="<?php echo $url;?>" target="_blank"><div class="img" style="background-image: url('<?php echo $imgsrc; ?>');"></div></a>
<a href="<?php echo $url;?>" target="_blank"><h1><?php echo $title; ?></h1></a>
<p><?php echo $desc; ?></p>
</div>
<?php
}
}
}
我没有向您展示 "page_id" 和 "access_token" 变量,但它们是正确的。
我怎样才能在页面加载中获得更好的性能?
谢谢!
是的,如果您在一个循环中发出多个 API 请求,当然会很慢。
(最慢的部分是您的应用程序为与 Facebook 服务器通信而发出的 HTTP 请求——如果您在循环中发出单个 API 请求,这意味着每个请求都有一个 HTTP 请求。)
改为使用字段扩展,一次性请求所有数据:https://developers.facebook.com/docs/graph-api/using-graph-api/#fieldexpansion
我正在尝试从 Facebook 页面获取帖子。 我在 here 中做到了 问题是页面有点慢(加载需要 4 或 5 秒)
我正在使用 2 "foreach" 来获取数据,也许这就是问题所在。
这是我的代码:
$json_object = @file_get_contents('https://graph.facebook.com/'.$page_id.'/posts?limit=4&access_token=' . $access_token);
$fbdata = json_decode($json_object);
foreach ($fbdata->data as $post)
{
$postid = $post->id;
$json_object2 = @file_get_contents('https://graph.facebook.com/'.$postid.'/attachments?access_token=' . $access_token);
$fbdata2 = json_decode($json_object2);
foreach ($fbdata2->data as $post2)
{
$title = $post2->title;
$type = $post2->type;
$url = $post2->url;
$desc = $post2->description;
$desc = str_replace("\n", "<br>", $desc);
if (strlen($desc) > 200){
$desc = substr($desc, 0, 200) . '...<br>...<br><a href="'.$url.'" target="_blank">Ver mais</a>';
}
$imgsrc = $post2->media->image->src;
if ($type=="note") {
?>
<div class="wrapper">
<a href="<?php echo $url;?>" target="_blank"><div class="img" style="background-image: url('<?php echo $imgsrc; ?>');"></div></a>
<a href="<?php echo $url;?>" target="_blank"><h1><?php echo $title; ?></h1></a>
<p><?php echo $desc; ?></p>
</div>
<?php
}
}
}
我没有向您展示 "page_id" 和 "access_token" 变量,但它们是正确的。
我怎样才能在页面加载中获得更好的性能?
谢谢!
是的,如果您在一个循环中发出多个 API 请求,当然会很慢。
(最慢的部分是您的应用程序为与 Facebook 服务器通信而发出的 HTTP 请求——如果您在循环中发出单个 API 请求,这意味着每个请求都有一个 HTTP 请求。)
改为使用字段扩展,一次性请求所有数据:https://developers.facebook.com/docs/graph-api/using-graph-api/#fieldexpansion