Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> czytnik rss + cache
Moli
post 4.04.2007, 16:48:43
Post #1





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam

Prosta klasa do obsługi czytnika RSS z cachowaniem. Klasa do działania wymaga PHP > 5.

Kod
<?php

class Rss {

public $rssFile;
public $cacheFile;
public $xml;
private $cacheDir;

public function __construct ( $rssFile , $cache = 'on' , $cacheDir = 'cache' )
{
    $this->rssFile   = $rssFile;
    $this->cacheFile = basename ( $this->rssFile );
    $this->cacheDir  = $cacheDir;
    
    if ( empty ( $this->rssFile ) OR empty( $cacheDir ) ) exit;
    
        if ( $cache == 'on' ) {
            if ( file_exists ( $this->cacheDir . '/' . $this->cacheFile . '.php' ) ) {
                $this->xml = simplexml_load_file ( 'cache/' . $this->cacheFile . '.php' );
            }    else {
                $this->xml = simplexml_load_file ( $this->rssFile );
                $cacheFileCode = file_get_contents ( $this->rssFile );
            
                $fp = fopen ( $this->cacheDir . '/' . $this->cacheFile . '.php' , 'w' );
                fwrite ( $fp , $cacheFileCode );
                fclose ( $fp );
            }
        } else {
            $this->xml = simplexml_load_file ( $this->rssFile );    
        }
    }

public function clearAllCache ()
{
    foreach ( glob($this->cacheDir . "/*.php") as $fileCacheName ) {
        unlink ( $fileCacheName );
    }
}

public function clearOneCache ( )
{
    unlink ( $this->cacheDir . '/' . $this->cacheFile . '.php' );
}

public function rssInfo ()
{
    $arr['version']     = $this->xml->attributes();
    $arr['title']       = $this->xml->channel->title;
    $arr['description'] = $this->xml->channel->description;
    
    return $arr;
}

public function getRss()
{
    return $this->xml->channel->item;
}

}

?>


Uzywanie
Kod
$rss = new Rss ( 'adres do pliku xml' , 'on/off cache', 'katalog dla cache' );

ps. Aby cache było włączone musimy dać on

Wyświetlanie informacji o kanale.

Kod
$info = $rss->rssInfo();

echo 'Wersja RSS = ' . $info['version'] . '<br />';
echo 'Tytuł kanału = ' . $info['title'] . '<br />';
echo 'Opis kanalu = ' . $info['description'] . '<br />';


Wyświetlenie notek
Kod
foreach ( $rss->getRss() as $item )
{
echo '<h1>' . $item->title . ' (' . $item->pubDate . ')</h1><br /><small>' . $item->description . '</small><br />' . $item->link;
}


Aby wyczyścić ten cache którego aktualnie używamy dajemy
Kod
$rss->ClearOneCache();

a żeby wyczyścić wszystkie cache dajemy
Kod
$rss->ClearAllCache();


Może komuś się przyda smile.gif
ps. Użyłem znaczników code a nie php bo php coś szwankuje.

Ten post edytował Moli 19.12.2007, 09:50:44
Go to the top of the page
+Quote Post
bear007
post 15.08.2008, 17:05:31
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 10.06.2005

Ostrzeżenie: (0%)
-----


Coś mi nie działa, dostaję taki błąd:


Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/&&&/domains/&&&/public_html/rss_agregat.php on line 7

na linii:

public $rssFile;

na początku deklaracji klasy Rss

Ten post edytował bear007 6.09.2008, 18:15:51
Go to the top of the page
+Quote Post
bim2
post 18.08.2008, 13:39:44
Post #3





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Zainstaluj php 5 winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
bear007
post 6.09.2008, 18:16:43
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 10.06.2005

Ostrzeżenie: (0%)
-----


Masz jeszcze jakieś głupie porady?

Ten post edytował bear007 6.09.2008, 18:17:45
Go to the top of the page
+Quote Post
nospor
post 6.09.2008, 18:17:58
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@bear007 oco ci chodzi? Przeciez dobrze napisal. Jak sie nie znasz to nie pyskuj chociaz

Klasa ta jest napisana pod php5. A ze ty uzywasz jej na php4 to dostajesz wlasnie takie bledy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bear007
post 6.09.2008, 18:23:52
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 10.06.2005

Ostrzeżenie: (0%)
-----


Nie mam problemu ze wzrokiem i jak widze jak byk w pierwszej linii posta autora watku ze wymagane jest PHP 5 to sprawdzam to na samym poczatku. Mam zainstalowane PHP 5 i jezeli ktos tutaj umie pomoc to o to prosze. A nie o powtarzanie informacji z samej gory watku, no chyba ze ten post znajduje sie w Hyde Park, to moze sie wszyscy posmiejemy z jakiegos kawalu dobrego?

Nospor - ekspercie, jak tak sugerujesz ze sie nie znam, to czekam na Twoją odpowiedź. Jak zrobić zeby ta klasa dzialala w PHP 5? Masz okazje zablysnac mimo wieku.

Ten post edytował bear007 6.09.2008, 18:25:54
Go to the top of the page
+Quote Post
nospor
post 6.09.2008, 18:37:52
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sluchaj, to ze myslisz ze odpalasz to na php5 to nie znaczy ze odpalasz to na php5. I nie zartuje sobie z ciebie tylko ci grzecznie wyjasniam.
Juz nie raz mielismy tu takich macho co to sie "znają" na rzeczy ale jednak problem maja...

Odpal sobie kod:
  1. <?php
  2. ?>

A dowiesz sie jakiego php uzywasz.
Kod bledy wyraźnie mowi ze to php4.

Cytat
Nospor - ekspercie, jak tak sugerujesz ze sie nie znam, to czekam na Twoją odpowiedź. Jak zrobić zeby ta klasa dzialala w PHP 5? Masz okazje zablysnac mimo wieku.
PAtrzy wyzej "ekspercie"

edit: jesli jakims cudem faktycznie masz php5 to moze masz wlączony tryb kompatybilnosci, ale to nie powinno miec wplywu.
Sprawa sie rozwiąze jak pokazesz nam co pokazuje ci phpinfo()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bim2
post 6.09.2008, 19:30:48
Post #8





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Że tak powiem głupi to jesteś ty.
Tłumacząć T_OLD_FUNCTION ja bym się nakierował, że jednak coś jest stare. Taki błąd zawsze wystepuje po użyciu public pod PHP 4.

I ta klasa działa w PHP 5. Spróbuj dodać zamiast .php to .php5


--------------------
Go to the top of the page
+Quote Post
tomaszs2
post 6.09.2008, 21:00:22
Post #9





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 3.05.2008

Ostrzeżenie: (0%)
-----


Przestańcie się wszyscy popisywać jak dzieci w przedszkolu.

Chciałbym u siebie skorzystać z tego kodu w PHP 4, czy ktoś z Was mógłby podpowiedzieć jak go przerobić?


--------------------
Polub mnie na Facebooku http://www.facebook.com/pages/Polishwords/172360026392
Albo Google+ https://plus.google.com/115722487152014068500/posts
Go to the top of the page
+Quote Post
rzymek01
post 6.09.2008, 22:26:54
Post #10





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


tomasz, generalnie to wystarczyłoby pozamieniac public, private na var,
z funkcji składowych wywalić public itp.,
a __construct zamienić na nazwe klasy

ale jest jedno ale biggrin.gif
ta klasa korzysta z roszerzenia działającego tylko na php5 (SimpleXML)

z manuala:
Cytat
The SimpleXML extension requires PHP 5.


--------------------
:]
Go to the top of the page
+Quote Post
bim2
post 7.09.2008, 22:06:53
Post #11





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Nie generalnie dałoby się, a

praktycznie się nie da i nie ma sensu przerabiać, bo to tak jakbyś chciał do nowego Ferrari wrzucić silnik parowy. :]


--------------------
Go to the top of the page
+Quote Post
tomaszs2
post 7.09.2008, 22:12:45
Post #12





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 3.05.2008

Ostrzeżenie: (0%)
-----


Jakby ktoś jednak wiedział jak przerobić to na 4 (chodzi mi o pominięcie tej klasy) to byłbym wdzięczny za podpowiedź.


--------------------
Polub mnie na Facebooku http://www.facebook.com/pages/Polishwords/172360026392
Albo Google+ https://plus.google.com/115722487152014068500/posts
Go to the top of the page
+Quote Post
maxbmx
post 30.11.2008, 00:02:16
Post #13





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 8.03.2008
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


Czy zna ktoś nazwę jakiegoś fajnego darmowego skryptu do rss'ów?
Chodzi o to zeby tworzyc sobie na stronie www czytnik wybranych cssów, otagować je, skategoryzować itp
szukałem w googlu ale nic nie znalazłem :/
Go to the top of the page
+Quote Post
sirkus
post 4.01.2009, 14:11:24
Post #14





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 7.10.2008

Ostrzeżenie: (0%)
-----


Witam,

właśnie dokładnie czegoś takiego szukałem, tylko pojawia się pewien problem, iż cache zapisuje się w ten sposób że

dla rss np. banki.wp.pl/rss.xml zapisze w folderze cache plik rss.php
i dla rss fundusze.wp.pl/rss.xml też będzie chciało zapisać plik z cache o nazwie rss.php

jak sobie z tym poradzić questionmark.gif i czy kod ten jest dość wydajny aby go stosować czy poszukać czegoś innego, lepszego, jeśli tak to co polecacie, są jakieś dobre gotowce rss z cache które niezbyt obciążają serwer questionmark.gif
Go to the top of the page
+Quote Post
bear007
post 4.01.2009, 14:16:47
Post #15





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 10.06.2005

Ostrzeżenie: (0%)
-----


jest idealny. Bym nie szukał nic innego. A co do tego co piszesz, to możesz złożyć to z nazwą domeny
Go to the top of the page
+Quote Post
erix
post 4.01.2009, 17:11:48
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
jak sobie z tym poradzić i

Wyciągaj sobie domenę z adresu i modyfikuj zmienną:
  1. <?php
  2. $this->cacheFile = basename ( $this->rssFile );
  3. ?>


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
bim2
post 4.01.2009, 17:24:18
Post #17





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Daj
$this->cacheFile = md5( $this->rssFile );

i będzie działać, ale nie rozróżnisz później który plik do jakiego adresu nalezy winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Sword
post 6.02.2009, 16:02:38
Post #18





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 17.12.2008

Ostrzeżenie: (0%)
-----


sory, że tak trochę odkopałem, ale chyba tutaj czegoś nie rozumiem, co daje to cache, skoro jeżeli raz wczyta jakiś rss to potem czyta tylko z tego co się zapisało w folderze cache niczgo nie dopisując ani nie zamieniając? tutaj:
  1. <?php
  2. if ( $cache == 'on' ) {
  3.            if ( file_exists ( $this->cacheDir . '/' . $this->cacheFile . '.php' ) ) {
  4.                $this->xml = simplexml_load_file ( 'cache/' . $this->cacheFile . '.php' );
  5. ?>

czyli nawet jak by sie cos zmieniło na stronie to i tak pobierze z folderu cache?

Ten post edytował Sword 6.02.2009, 16:03:53
Go to the top of the page
+Quote Post
Moli
post 6.02.2009, 16:44:26
Post #19





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Masz racje, to stara klasa i wypadało by ją zaktualizować smile.gif Jak będę miał chwilke to usiąde i poprawie bo mam pare pomysłow smile.gif
Go to the top of the page
+Quote Post
mowgli91
post 14.09.2010, 13:46:16
Post #20





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.12.2008
Skąd: Szamotuły, Poznań

Ostrzeżenie: (0%)
-----


Czy istnieje wersja czytnika dla kanału Atom?


--------------------
Zapraszam na www.redtube.com
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 11:08