繁体   English   中英

Facebook $ facebook-> getUser()非常慢

[英]Facebook $facebook->getUser() very very slow

我在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-> getUser(); 在过去的3个小时内,我的应用程序正在放慢速度,有时需要2分钟,直到脚本继续运行。 但必须在30秒以上。 有什么方法可以缓存它或再次加快速度吗?

您还可以通过避免来加速您的网站

$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()。 但是,如果用户没有登录,这似乎工作得非常快。

问题得到解决,API再次反应得足够快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM