[英]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.