хранение всего графического объекта facebook в сессии php - PullRequest
0 голосов
/ 19 декабря 2011

Я довольно новичок в сессиях 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!

но стоит ли сохранять все эти данные в сеансе? это то, для чего они обычно используются или это только небольшие объемы данных, которые передаются со страницы на страницу?

также были бы полезны любые советы по оптимизации!

Спасибо, Алекс

1 Ответ

1 голос
/ 19 декабря 2011

Лично я считаю, что это нормально, но потенциально поток может занимать много памяти или содержать ошибки, которые будут сохраняться в течение сеанса.

Как насчет периодического импорта возвращаемых данных в вашу базу данных??У вас может быть таблица, в которой всегда содержатся последние сообщения n и т. Д. Если обновление завершится неудачно, у вас останутся прежние «чистые» данные.

С точки зрения оптимизации вы можете получитьнекоторая производительность при использовании cURL для получения данных, что-то вроде этого:

$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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...