Pull to refresh

Загрузка последнего сообщения из Twitter-блога определенного пользователя

Reading time2 min
Views717
Написал небольшой скрипт, который получает последнее сообщение из Twitter-блога указанного пользователя. Имеет функцию кеширования — сохраняет сообщение в текстовом файле, что позволяет избежать необходимости каждый раз загружать и обрабатывать RSS-ленту микроблога. Через определенный промежуток времени кеш обновляется из web.

Как работает


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

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

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

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

Скомпонованный код



class GetLastTwitt{

public $cache_file = './last_twitt.txt';
public $cache_period = 3600;

private $username;
private $dom;

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

private function setEnv(){
$feed_url = 'http://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($handle, filesize($this->cache_file));
fclose($handle);
return $cached_twitt;
}

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

}

$a = new GetLastTwitt('skaizer');
echo $a->getLast();


Скачать

Вопрос



Кстати возник вопрос, если интегрировать этот скрипт в какой-либо сайт, допустим в блог, увеличит ли это частоту посещения сайта роботом поисковиков? Ведь с каждым новым обновлением в твиттере будет изменяться частичка контент почти на всех страницах сайта, поидее поисковик должен фиксировать частое обновление контента.

Зеркало этого топика в моем блоге.
Tags:
Hubs:
+4
Comments9

Articles