Időjárásjelző
Sziasztok
Találtam egy jó kis leírést arra, hogy hogyan lehet időjárás jelzőt csinálni..
íme:
Innen másoltam: http://designprog.net/blog/bejegyzes/20071119/idojarasscript
Ez eddig oké.. de követtem az utasításokat, letöltöttem amit kellet (PEAR XML_RSS), de nekem a következő hibát írja:
Warning: require_once(Parser.php) [function.require-once]: failed to open stream: No such file or directory on line 23
Fatal error: require_once() [function.require]: Failed opening required 'Parser.php' (include_path='.:/servers/php/lib/php') on line 23
Erre a hibára is találtam megoldást itt: "Hogyan hozzunk létre Parser.php-t, vagyis hogy mi kell bele.."
http://articles.techrepublic.com.com/5100-3513_11-6110135.html
De, a parser.php megnyitásakor ez a hiba jött be: Fatal error: Class 'XML_Parser' not found on line 36
Elvileg a PEAR XML_RSS -ben benne kéne lennie a Parser.php nak, de nincs :((
légyszives aki tud az segítsen!
■ Találtam egy jó kis leírést arra, hogy hogyan lehet időjárás jelzőt csinálni..
íme:
Innen másoltam: http://designprog.net/blog/bejegyzes/20071119/idojarasscript
Amikor még a script-kid korszakomat éltem, csodálkozva néztem a nagy siteokat, hogyan képesek az aktuális időjárási adatok kijelzésére. Eltelt egy fél tucat év, majd az egyik sitebuilder kollégám megkeresett egy ilyen problémával. Elkezdett járni az agyam, hogyan lehetne megtudni az aktuális időjárási adatokat a lehető leggyorsabban és leginkább kényelmesen.
Eszembe jutott, hogy van az idokep.hu, ami a Firefoxomban is kijelzi a várható időjárást. Megláttam, hogy az oldalnak van RSS csatornája is, ami esetleg használható lenne.
Az RSS feldolgozása természetesen a lehető legegyszerűbb módon, a PEAR XML_RSS csomagjával történik. Az adatokat a http://adat.idokep.hu/rss/adatok.php szkript szolgáltatja, ezt használja a mi rendszerünk is. Annak érdekében, hogy a távoli szervert ne terheljük túl, óránként csak egyszer kérdezzük le az időjárásra vonatkozó információkat.
A szkriptet a definiálásokkal kezdjük:A fentiek szerint a rendszer az idojaras.cache nevű fájlt használja cache fájlként, és a feldolgozott csatorna nulladik elemére (vagyis az elsőre) vagyunk kíváncsiak.
Két függvényt fogunk használni, egyet a cache feldolgozásához, egyet pedig az RSS feldolgozásához. Előbbi függvény megvalósítása:Ez tehát ellenőrzi a cache fájlban használt időbélyeget, ha az már elévült, úgy frissíti azt. A csatornát az alábbi függvény kezeli:Ez a függvény beolvassa és feldolgozza az RSS csatornát, majd elmenti a cache-t. Ha mindez nem sikerülne, a régi fájlt használja. És végül a használat:Eredménye:
Eszembe jutott, hogy van az idokep.hu, ami a Firefoxomban is kijelzi a várható időjárást. Megláttam, hogy az oldalnak van RSS csatornája is, ami esetleg használható lenne.
Az RSS feldolgozása természetesen a lehető legegyszerűbb módon, a PEAR XML_RSS csomagjával történik. Az adatokat a http://adat.idokep.hu/rss/adatok.php szkript szolgáltatja, ezt használja a mi rendszerünk is. Annak érdekében, hogy a távoli szervert ne terheljük túl, óránként csak egyszer kérdezzük le az időjárásra vonatkozó információkat.
A szkriptet a definiálásokkal kezdjük:
require_once ( "XML/RSS.php" );
define( "RSS_URL" , "http://adat.idokep.hu/rss/adatok.php" );
define( "CACHE" , "idojaras.cache" );
define( "BUDAPEST" , 0);
$timestamp = date ("Y-m-d H");
Két függvényt fogunk használni, egyet a cache feldolgozásához, egyet pedig az RSS feldolgozásához. Előbbi függvény megvalósítása:
function readWeatherFile( $forceduse = false) {
global $timestamp;
$cache_contents = file_get_contents( CACHE );
$weather_data = explode( " - " , $cache_contents);
if ( $weather_data[0] == $timestamp || $forceduse ) {
array_shift ( $weather_data );
$ret = $weather_data;
}
else {
$ret = updateWeatherFile();
}
return $ret;
}
function updateWeatherFile() {
global $timestamp;
$rss =& new XML_RSS( RSS_URL );
$rss->parse();
if ( count ( $rss ) > 0 && !empty ( $rss->items[BUDAPEST]['description'] ) ) {
$to_cache = $ret = $timestamp . ' - ';
$to_cache .= $rss->items[BUDAPEST]['description'];
file_put_contents ( CACHE , $to_cache);
}
else {
$ret = readWeatherFile( true );
}
$ret = readWeatherFile();
return $ret;
}
if ( file_exists ( CACHE ) && is_readable ( CACHE ) ) {
$ret = readWeatherFile();
}
else {
$ret = updateWeatherFile();
}
print_r ( $ret );
Array ( [0] => Budapest [1] => borult [2] => 6.3 °C [3] => szélcsend )
Ez eddig oké.. de követtem az utasításokat, letöltöttem amit kellet (PEAR XML_RSS), de nekem a következő hibát írja:
Warning: require_once(Parser.php) [function.require-once]: failed to open stream: No such file or directory on line 23
Fatal error: require_once() [function.require]: Failed opening required 'Parser.php' (include_path='.:/servers/php/lib/php') on line 23
Erre a hibára is találtam megoldást itt: "Hogyan hozzunk létre Parser.php-t, vagyis hogy mi kell bele.."
http://articles.techrepublic.com.com/5100-3513_11-6110135.html
De, a parser.php megnyitásakor ez a hiba jött be: Fatal error: Class 'XML_Parser' not found on line 36
Elvileg a PEAR XML_RSS -ben benne kéne lennie a Parser.php nak, de nincs :((
légyszives aki tud az segítsen!
Bocsi...
Tudod, hogy mit jelent a hibaüzenet?
A 'require' és a 'require_once' utasításoknak van egy olyan tulajdonságuk, hogy ha nem találják a betöltendő fájlt, akkor hibaüzenettel leállítják a program futását.
Ebből következik, hogy vagy rossz helyre tetted a fájlt, vagy rossz 'string'-et adtál meg fájlnévnek, vagy nincs jogosultságod az olvasáshoz.
Ha mégsem, akkor mégegy bocsi.
Időjárás kijelzés II
Link a cikkhez: Aktuális időjárás kijelzése PHP-vel.