PHP

Получение последнего сообщения из Twitter-блога

Написал небольшой скрипт, который получает последнее сообщение из 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();
Теги:
Twitter, блог
Добавлено: 10 Мая 2018 12:01:54 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...