login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Cachen van RSS

Offline NightFox - 21/08/2006 16:46 (laatste wijziging 21/08/2006 16:51)
Avatar van NightFoxNieuw lid Ik ben bezig met het cachen van een rss feed. Nu heb ik wel een goed caching script maar de RssReadFile() functie die werkt niet zo dat hij de goeie info terug geeft om op te slaan. Momenteel ziet mijn cache bestand er zo uit:

s:4 : "1111"; //de spaces moesten anders kreeg ik een icon

of zo

i:1;

Normaal zou mijn ReadRssFile() functie gewoon werken (als je het niet wil cachen maar in dit geval wil ik dat wel) Kan iemand voor mij de ReadRssFile() zo maken dat hij alles in het cache bestand kan zetten?

Greetz,

NightFox

//-- CacheXML() --\\
  1. <?php
  2. function CacheXML()
  3. {
  4. if ( !empty( $this->CacheDir ) )
  5. {
  6. $CacheFile = $this->CacheDir . 'rsscache_' . md5( $this->FeedUrl );
  7. $timedif = @( time() - filemtime( $CacheFile ) );
  8. if ( $timedif < $this->TimeOut )
  9. {
  10. //Cached file is still up-to-date
  11. $result = unserialize( join( '', file( $CacheFile ) ) );
  12. //
  13. $this->Alertmsg( $this->ErrorInt = 0 .", ". $timedif );
  14. //
  15. }
  16. else
  17. {
  18. // Cached file is too old, create new
  19. $result = $this->ReadRssFile( $this->FeedUrl );
  20. $serialized = serialize( $result );
  21. if ( $f = @fopen( $CacheFile, 'w' ) )
  22. {
  23. fwrite ( $f, $serialized, strlen( $serialized ) );
  24. fclose( $f );
  25. }
  26. //
  27. $this->Alertmsg( $this->ErrorInt = 1 );
  28. //
  29. }
  30. }
  31. else
  32. {
  33. //Cache Dir is not set
  34. $result = $this->ReadRssFile( $this->FeedUrl );
  35. //
  36. $this->Alertmsg( $this->ErrorInt = 0 );
  37. //
  38. }
  39.  
  40. return $result;
  41. }
  42. ?>


//-- ReadRssFile() --\\
  1. <?php
  2. function ReadRssFile( $Feed )
  3. {
  4. if( !$fp = fopen( $Feed, "r" ) )
  5. {
  6. die( "Couldn't open XML Input." );
  7. }
  8. while( $data = fread( $fp, $this->datastream ) )
  9. {
  10. if( !$parse = xml_parse( $this->FeedParse, $data, feof( $fp ) ) )
  11. {
  12. die( "Error in reading xml source." );
  13. }
  14. }
  15.  
  16. fclose( $fp );
  17. xml_parser_free( $this->FeedParse );
  18.  
  19. return $parse;
  20. }
  21. ?>

1 antwoord

Gesponsorde links
Offline Thomas - 22/08/2006 12:57
Avatar van Thomas Moderator Hm.

In regel 11 moet $result nog gelezen worden m.b.v. ReadRssFile() denk ik?

Daarnaast retourneert file() de regels van de feed met hier nog newline-regels aan vast, dus wellicht moet je $CacheFile joinen op grond van "\n"?

Controleer anders eens hoe e.e.a. er tussendoor uit ziet (met name die $result van regel 11 uit het eerste codefragment - worden alle functies die je hier overheen gooit goed uitgevoerd?).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.186s