RSS feed error afvangen als feed niet bereikbaar is
Ik heb nog een klein vraagje:
Weet iemand hoe ik het volgende probleem kan oplossen? :
Ik heb een rss feed in mijn pagina en nu wil ik dat als er geen feed is (ik zag laatste dat de feed even offline was?) dat hij dan netjes zegt: er is geen feed beschikbaar.
een if'je en een elsje om deze code heen?
groetjes en alvast bedankt!
Geef even een niet-bestaande feed op om de boel te testen.
haha nou ik weet niet wat de parameters moeten zijn voor de if en de else lus :) Hoe check ik of een feed in de lucht is?
Ik denk dat je best even kan kijken of de feed online is met fopen of sockets. Krijg je een timeout, dan weet je dat de feed offline is.
daar is toch file_exists() voor uitgevonden?
dit script.
In dat geval moet je file_get_contents() inderdaad vervangen door een eigen gebakken fsockopen met timeout op iets dat redelijk is.
Je zou bijvoorbeeld dit script kunnen nemen, alle fopen/fwrite-delen die naar het lokale bestand verwijzen kunnen vervangen door het schrijven naar een variabele, en op regel 22 de timeout van 30 terug naar iets in de richting van 5, of 3 seconden brengen.
edit:
Gefeliciteerd PHP Newbie, je hebt de zoveelste die over het hoofd ziet dat:
Volgens mij hebben we het over In dat geval moet je file_get_contents() inderdaad vervangen door een eigen gebakken fsockopen met timeout op iets dat redelijk is.
Je zou bijvoorbeeld dit script kunnen nemen, alle fopen/fwrite-delen die naar het lokale bestand verwijzen kunnen vervangen door het schrijven naar een variabele, en op regel 22 de timeout van 30 terug naar iets in de richting van 5, of 3 seconden brengen.
edit:
Gefeliciteerd PHP Newbie, je hebt de zoveelste die over het hoofd ziet dat:
Quote:
Opmerking: This function will not work on remote files as the file to be examined must be accessible via the servers filesystem.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
had het idd al geprobeerd ;) kan niet hehe
Je zou kunnen overwegen om de uitkomst van het testen van het online zijn van de feed op de server op te slaan (serverside cachen) en die periodiek te verversen. Zo voorkom je een hogere laadtijd.
Jelmer:
...
edit:
Gefeliciteerd PHP Newbie, je hebt de zoveelste die over het hoofd ziet dat:
edit:
Gefeliciteerd PHP Newbie, je hebt de zoveelste die over het hoofd ziet dat:
Quote:
Opmerking: This function will not work on remote files as the file to be examined must be accessible via the servers filesystem.
o nee?
http://phphulp.chess-web.nl/?p=file
wat voor code heb je daar voor gebruikt?
Blijkbaar tegenwoordig dus wel. Maar nu: Wat doet hij bij een 404 pagina, al geprobeerd? Of wat bij een domein waar wel een verwijzing naar is, maar niets geserveerd wordt. Hij haalt de pagina's niet op vermoed ik, want daar gaat hij veel te snel voor. Hij kijkt dus waarschijnlijk alleen of er een dns-record voor bestaat...
De code:
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
error_reporting(0);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(file_exists('http://'.$_POST['url']))
{
echo 'http://'.$_POST['url'].' bestaat';
}
else
{
echo 'http://'.$_POST['url'].' bestaat niet';
}
}
else
{
?>
<form action="#" method="post">
Url: http://<input name="url" type="text"><br />
<br />
<input name="submit" type="submit" value="submit"></form>
<?php
}
?>
error_reporting(0);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(file_exists('http://'.$_POST['url']))
{
echo 'http://'.$_POST['url'].' bestaat';
}
else
{
echo 'http://'.$_POST['url'].' bestaat niet';
}
}
else
{
?>
<form action="#" method="post">
Url: http://<input name="url" type="text"><br />
<br />
<input name="submit" type="submit" value="submit"></form>
<?php
}
?>
error_reporting op 0 is niet mijn gewoonte, maar omdat ik het nu even vlug geschreven heb, heb ik het toch maar even gedaan.
Edit:
code tags toegevoegd
code tags toegevoegd
Edit:
Een gewone 404 van apache ziet ie niet als pagina, maar een zelf gemaakte (zie chess-web.nl/aasdasddsf) bestaat wel volgens php.
Een gewone 404 van apache ziet ie niet als pagina, maar een zelf gemaakte (zie chess-web.nl/aasdasddsf) bestaat wel volgens php.
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Quote:
Ik krijg altijd 'bestaat niet', ook bij 'localhost'.
PHP Version 5.1.2
lokaal getest terwijl ik deze post typ, dus ik had wel degelijk internetverbinding. Verder geen fopen-wrappers geblokkeerd.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
bij mij ook niet :(
http://www.phphulp.nl is geen bestand. http://www.phphulp.nl/index.php is dat wél.
Lijkt me ook logisch, want Die mysterieuze dingen in het leven soms... :)
Edit:
http://www.tctubantia.nl/regio/almelo/?service=rss werkt bij Newbie dus ook :S
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
Jan:
Lijkt me ook logisch, want http://www.phphulp.nl is geen bestand. http://www.phphulp.nl/index.php is dat wél.
Had ik uiteraard ook aan gedacht, maar
http://www.ikhoefgeen.nl/index.php bestond niet...
En technisch gezien is http://localhost/ wel degelijk een webpagina. Ik krijg immers wel degelijk een pagina door Apache voorgeschoteld.
ok nu weet ik dus welke functie niet werkt :P weet iemand welke wel werkt?
Jelmer:
Had ik uiteraard ook aan gedacht, maar
http://www.ikhoefgeen.nl/index.php bestond niet...
http://www.ikhoefgeen.nl/index.php bestond niet...
Omdat het script van PHP newbie er dan http://http://enz van maakt. Als je dit invult:
www.ikhoefgeen.nl/index.php
dan bestaat hij wel.
Mooie code php newbie :D Hier kunnen we weer veel van leren.