簡體   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