[PHP] RSS feed lijkt gecached

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • CAP-Team
  • Registratie: April 2000
  • Laatst online: 19-09 11:30

CAP-Team

XBL: CAPTeam

Topicstarter
Hallo,

Ik gebruik op mijn intranet pagina een RSS feed van tweakers.net. Echter het valt me vaak op dat deze achter loopt, dus de inhoud bevat de topics op de frontpage van een of meerdere dagen terug. Terwijl als ik de feed rechtstreeks open in de browser deze wel actueel is. Ik gebruik hetzelfde script voor de FOK! frontpage en deze is altijd wel actueel op mijn intranetpagina.

Wordt er nu ergens wat gecached voor Tweakers?

De code is als volgt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
//variabelen resetten
$data = "";
$aantaltonen = 21;

if($file = fopen("http://feeds.feedburner.com/tweakers/mixed","r")) { 
    while(!feof($file)) { 
        $data .= fgets($file, 1024); 
    } 
  fclose($file); 
   
  // Zet de RSS-feed in een array 
  $p = explode("<item>", $data); 
  for($i = 0; $i < count($p); $i++) { 
    $item = $p[$i]; 
    if($q = stristr($item, "<title")) { 
        $r = stristr($q, "</title"); 
      $trss[$i]['title'] = substr($q, 7, strlen($q) - strlen($r) - 7); 
      $trss[$i]['title'] = utf8_decode($trss[$i]['title']);         
      $trss[$i]['title'] = html_entity_decode($trss[$i]['title']); 
      $trss[$i]['title'] = str_replace(" ", " ", $trss[$i]['title']); 
    } 

    if($q = stristr($item, "<pubDate")) { 
        $r = stristr($q, "</pubDate"); 
      $trss[$i]['pubdate'] = strtotime(substr($q, 9, strlen($q) - strlen($r) - 9)); 
    } 
        
    if($q = stristr($item, "<link")) { 
        $r = stristr($q, "</link"); 
      $trss[$i]['link'] = substr($q, 6, strlen($q) - strlen($r) - 6); 
    } 
  } 
     
  //verwerk en toon toon de linkjes
  if($trss) { 
    for($i = 1; $i < $aantaltonen; $i++) { 
        $link = $trss[$i]['link']; 
      $longtitel = $trss[$i]['title']; 

      if (strlen($longtitel) >40) { 
        $shorttitel = substr($longtitel,0,35) . ".."; 
      } else { 
        $shorttitel = $longtitel; 
      }
        
      if($trss[$i]['pubdate']) { 
        $date = date("d-m H:i", $trss[$i]['pubdate']); 
      } else { 
        $date = date("d-m H:i"); 
      }

      // als de tekst ADV: bevat dan niets doen (reclame) anders link tonen
      if (strpos($shorttitel, 'ADV:') !== false) {
        // niks doen
      } else {
        echo "$date&nbsp;&nbsp;<A HREF=\"$link\" TITLE=\"$longtitel\">$shorttitel</A><BR>\n";               
      }
    } //einde forlus controleren en toevoegen rssfeed 
  }//einde rss wel waarde 
} else { 
    echo "Fout bij lezen RSS feed."; 
}
?>


Of kan het aan de PHP instellingen liggen?

Microsoft Surface Pro 6 | Samsung Galaxy S21FE | XBOX Series X


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

Volgens mij klopt het wel dat je een gecachede versie krijgt als je op deze manier de feed van feedburner opvraagt; probeer eens een (browser)User-Agent requestvariabele mee te sturen (dan zal je ws wel moeten overstappen naar bijvoorbeeld CURL om je request te doen).

Overigens is het wel zo netjes om je zelf ook aan HTTP directives te houden en bijvoorbeeld If-Modified-Since mee te sturen en 304's af te vangen.

[ Voor 21% gewijzigd door crisp op 24-12-2008 17:47 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Wmm
  • Registratie: Maart 2002
  • Laatst online: 19-09 09:58

Wmm

Een useragent meegeven, zoals Crisp zegt dus (hij zal het zelf ook niet weten zeg :P), lost het inderdaad op. Ik had een tijdje terug precies hetzelfde probleem, in de search was hierover toen al een draadje te vinden :).

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Wmm schreef op woensdag 24 december 2008 @ 19:50:
Een useragent meegeven, zoals Crisp zegt dus (hij zal het zelf ook niet weten zeg :P), lost het inderdaad op. Ik had een tijdje terug precies hetzelfde probleem, in de search was hierover toen al een draadje te vinden :).
Idd user agent meegeven, check ook mijn eerdere topic hierover: \[PHP/RSS] kort vraagje over RSS

@crisp: dit moet voldoende zijn:
PHP:
1
2
3
<?php
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');
?>

[ Voor 15% gewijzigd door Y0ur1 op 24-12-2008 20:47 ]


Acties:
  • 0 Henk 'm!

  • CAP-Team
  • Registratie: April 2000
  • Laatst online: 19-09 11:30

CAP-Team

XBL: CAPTeam

Topicstarter
Die user agent regel lost het probleem op! d:)b thanx!

Microsoft Surface Pro 6 | Samsung Galaxy S21FE | XBOX Series X


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

Y0ur1 schreef op woensdag 24 december 2008 @ 20:46:
[...]

Idd user agent meegeven, check ook mijn eerdere topic hierover: \[PHP/RSS] kort vraagje over RSS

@crisp: dit moet voldoende zijn:
PHP:
1
2
3
<?php
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');
?>
Niet als je ook netjes cache-directives wilt opvolgen ;)

Intentionally left blank

Pagina: 1