2011-12-19 86 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); 
}