avatar_Everybody

Как получить последний твит пользователя через PHP скрипт с кешированием

Автор Everybody, 2012 Июль 20, 14:10

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] phpскриптtwitterкеширование

Everybody

php скрипт получает последнее сообщение из определенного Twitter пользователя.
Кеш — сохраняет сообщение в текстовом файле, что избавляет от надобности каждый раз загружать и обрабатывать RSS-ленту микроблога. Через указанный вами промежуток времени кеш обновляется из web.

Как это работает

Грузится RSS-лента нужного вам пользователя, выбирается последняя запись и, при необходимости, кешируется в текстовом файле. XML обрабатывается через DOMDocument.

Атрибут public $cache_file определяет расположение файла кеша.

Атрибут public $cache_period отвечает за частоту обновления кеша. Указывается в секундах (3600 соответствует 1 часу). Если значение равно 0, кеш игнорируется.

Все остальное, думаю, понятно. Если есть вопросы, задавайте.

<?php

class GetLastTwitt{

public 
$cache_file './last_twitt.txt';
public 
$cache_period 0;

private 
$username;
private 
$dom;
private 
$get_xml_method 'curl';

function 
__construct($username){
$this->username $username;
}

private function 
setEnv(){
$feed_url 'https://twitter.com/statuses/user_timeline/'.$this->username.'.rss';

$this->dom = new DOMDocument();
$this->dom->load($feed_url);
}

private function 
returnLastTwitt (){
if (
$this->cache_period != 0)
if (
file_exists($this->cache_file))
if (
$this->cache_period $this->getCacheDateDiff())
return 
$this->getLastFromCache();

return 
$this->getLastFromWeb($this->username);
}

private function 
getLastFromWeb($username){
$this->setEnv();
$rows $this->dom->getElementsByTagName('item');
$last_twitt $rows->item(0)->getElementsByTagName('title')->item(0)->nodeValue;
$this->cache_twitt($last_twitt);
return 
$last_twitt;
}

private function 
cache_twitt($msg){
$handle fopen($this->cache_file,'w');
fwrite($handle$msg);
fclose($handle);
}

private function 
getCacheDateDiff(){
return 
date('U') - filemtime($this->cache_file);
}

private function 
getLastFromCache(){
$handle fopen($this->cache_file,'r');
$cached_twitt fread($handlefilesize($this->cache_file));
fclose($handle);
return 
$cached_twitt;
}

final function 
getLast(){
return 
$this->returnLastTwitt();
}

}


$a = new GetLastTwitt('xmunet'); /* тут ваш ник */
echo $a->getLast();

?>


Похожие темы (5)