2011-12-19 85 views
0

我很新的PHP會話,所以我不知道他們是如何在行業最佳實踐等存儲整個Facebook的圖形對象插入到PHP會話

我使用的file_get_contents來獲取Facebook的使用爲我的頁面創建流數據,然後使用php解析JSON並顯示在頁面上。然而我注意到我的網站存在嚴重的延遲,這顯然是因爲每次頁面加載時,它都會提取Facebook流,然後解析並返回html。

所以我想盡辦法加快這一進程,所以我的頁面加載時間不吃虧(因爲我的facebook流將在我的網站的每一頁上),我想出了這個簡單的代碼:

<div id="FacebookFeed"> 
    <h1>Facebook</h1> 
    <? 
     if (isset($_SESSION["fbFeed"])){ 
      $fbFeed = $_SESSION["fbFeed"]; 
     } 
     else { 
      $fbFeedURL = "https://graph.facebook.com/***/feed?access_token=***&limit=1"; 
      $fbFeedString = file_get_contents($fbFeedURL); 
      $fbFeed = json_decode($fbFeedString); 
      unset($fbFeedString); 
      $_SESSION["fbFeed"] = $fbFeed; 
     } 
     if ($fbFeed != null){ 
    ?> 
    <p><? var_dump($fbFeed);?></p> 
    <? } ?> 
</div> 

所以基本上如果設置了「fbFeed」會話,我使用它(希望它會比在每個頁面上獲取數據更快),如果未設置,我將它設置。 SIMPLE'S!

但在會話中保存所有數據是個好主意嗎?是它們通常用於什麼目的,還是隻有少量的數據通過頁面傳遞?

還有任何優化技巧會有幫助!

謝謝,亞歷克斯

+0

你是怎麼得到這個到底是誰? – 2011-12-22 13:18:56

+0

我拉我需要的信息例如名稱,發佈信息,如果它存在,也可能是鏈接,並將它存儲在會話中!在頁面加載時,如果會話存在,請使用會話數據。如果不是,則獲取數據。這意味着您第一次加載頁面大約需要3秒。所有後續的時間。它的速度相當快;)我會去選擇數據庫選項,但是我只提取了一篇文章 – 2011-12-22 15:25:11

回答

1

我個人認爲它的罰款要做到這一點,但可能流會佔用大量的內存或包含將在該會議上的錯誤。

如何定期將返回的數據導入數據庫?你可以有一張表,總是包含最新的帖子等。如果更新失敗,那麼你仍然有你以前的'乾淨'的數據。

在優化方面,您可以使用捲曲獲取數據獲得一些性能提升,這樣的事情:

$feed = null; 
$curl = curl_init('https://graph.facebook.com/***/feed?access_token=***&limit=1'); 

// check that it's a valid resource 
if (is_resource($curl) === true) { 
    // setup options 
    curl_setopt($curl, CURLOPT_FAILONERROR, true); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

    // execute session and then close it 
    $response = curl_exec($curl); 
    curl_close($curl); 

    // attempt to json decode if we get a valid response 
    if ($response) { 
    $feed = json_decode($response, true); 
    } 
} 

// if valid feed 
if ($feed) { 
    var_dump($feed); 
}