如何解决获取页面内容和json_decode加载问题
| 我有以下代码,该代码调用Facebook的打开图,并返回一个包含共享和ID的对象。唯一的问题是,我打电话30次,加载时间超过9秒。有没有一种更简单的方法来直截了当地并仅获得份额,从而使加载速度更快?//facebook
$fdata = file_get_contents(\'http://graph.facebook.com/http://theoatmeal.com/comics/127_hours\');
$fdata = json_decode($fdata);
if($fdata->shares) {
$share_count[\'facebook\'] = $fdata->shares;
}
解决方法
这就是我用来从graph.facebook.com解码的内容
<?php
$info = \"http://theoatmeal.com/comics/127_hours\";
$url = \"http://graph.facebook.com/\". $info . \"\";
$geturl = file_get_contents($url);
$info = json_decode($geturl);
{
$id = $info->id;
$shares = mysql_real_escape_string($info->shares);
?>
<?php echo $id;?><br>
<?php echo $shares;
}
?>
, 一种简单易行的好方法是使用Facebook PHP SDK(请参阅github)。首先,您必须确保用户已登录:
require \"facebook.php\";
$facebook = new Facebook(array(
\'appId\' => YOUR_APP_ID,\'secret\' => YOUR_APP_SECRET,));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api(\'/me\');
} catch (FacebookApiException $e) {
$user = null;
}
}
如果他已登录,则可以进行API调用:
$result = $facebook->api(...);
如果他不是,则必须登录他:
<?php if ($user): ?>
<a href=\"<?php echo $facebook->getLogoutUrl() ?>\">Logout of Facebook</a>
<?php else: ?>
<a href=\"<?php echo $facebook->getLogoutUrl() ?>\">Login with Facebook</a>
<?php endif ?>
希望有帮助!
, 第一次我不太了解您的问题,因此我尝试再次尝试。
您可以使用FQL进行查询:
$fql = \'SELECT total_count FROM link_stat WHERE url=\"http://google.com\"\';
$json = file_get_contents(\'https://api.facebook.com/method/fql.query?format=json&query=\' . urlencode($fql));
$data = json_decode($json);
echo $data[0]->total_count;
在这里,total_count
为您提供链接的共享数量。
如果您要查询多个URL,则可以使用OR
在一个查询中进行所有查询:
SELECT url,total_count FROM link_stat WHERE url=\"...\" OR url=\"...\"
这是一个示例,您要获取这4个URL的份额数:
$urls = array(
\"http://google.com\",\"http://twitter.com\",\"http://stackoverflow.com\",\"http://linkedin.com\"
);
function wrap($url) {
return \'url=\"\' . $url . \'\"\';
}
$fql = \'SELECT url,total_count FROM link_stat WHERE \';
$fql .= implode(\" OR \",array_map(\"wrap\",$urls));
$json = file_get_contents(\'https://api.facebook.com/method/fql.query?format=json&query=\' . urlencode($fql));
$data = json_decode($json);
$data
是4个对象的数组,每个URL的共享号:
array(4) {
[0]=> object(stdClass)#2 (2) {
[\"url\"]=> string(17) \"http://google.com\"
[\"total_count\"]=> int(1318598)
}
[1] => ...
[2] => ...
[3] => ...
}
希望有帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。