我的oauth2应用中的facebook PHP-SDK存在问题。我通过JS-SDK使用登录,但通过PHP处理大部分应用程序。
这是我用来处理这个问题的PHP代码:
<?php
$uid = null;
include_once "lib/facebook.php";
if (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
{
header('p3p: CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"');
}
$facebook = new Facebook(array(
'appId' => FB_APP_ID,
'secret' => FB_APP_SECRET,
'cookie' => true
));
$user = $facebook->getUser(); // this take for ever
if ($user) {
try {
$uid = trim($user);
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
echo $e;
try {
$uid = trim($user);
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
}
}
}
?>
我发现$ facebook-&gt; getUser();在过去的3个小时内,我的应用程序正在放慢速度,有时需要2分钟,直到脚本继续运行。但必须在30秒以上。有没有办法缓存这个或一种方法来再次加快速度?
答案 0 :(得分:3)
您还可以通过避免
来加速您的网站$user = $facebook->getUser();
随时可以。我的网站上的每个页面都有半秒钟的性能问题,因为我正在调用该函数来检查我的用户是否仍然登录。
这项检查对您来说可能是必不可少的,但就我而言,事实并非如此。如果您的网站可以在用户点击退出按钮之前牺牲该检查,则替换
$user = $facebook->getUser();
与
if(! isset($_SESSION["fb_<my App ID>_user_id"])) // Replace <my App ID> with yours
$user = $_SESSION["facebook"]->getUser();
并致电
if(isset($_SESSION["fb_<my App ID>_user_id"]))
unset($_SESSION["fb_<my App ID>_user_id"]);
在您的退出页面上。这将加速整个网站。
如果您的用户未登录,您将经常有效地调用getUser()。但是,如果用户没有登录,这似乎工作得非常快。
答案 1 :(得分:0)
问题得到解决,API的反应速度再次快。