Távoli eléréstől lehal az egész oldal? XML kontra PHP fopen();function
Sziasztok! HELP ME PLEASE! Nagyon kivagyok, napok óta töröm a fejem, de nem lelek rá sehogy sem a megoldásra. (Ha van egyáltalán! :-D LóóóL)
A problémám a következő:
Van egy saját oldalam, legyen a neve (index.php) az xy.hu domainen.
Aztán van egy távoli nevezzük úgy server (!nem a sajátom, erre nincs semmilyen ráhatásom!), ami adatokat szolgáltat nekem egy XML fájl segítségével a következő URL-en keresztül:
Pl.: http://domain.com/mappa/local/XML_file?param1=value1¶m2=value2&u_id=5437864&u_key=135fc4684ed8435 (az XML fájlnak nincs kiterjesztése)
tehát...
Az XML fileból kiolvasott adatokat az index.php fájlomba fogom beilleszteni. FIGYELEM! NEM az adatok KIOLVASÁSÁN, illetőleg azutáni beillesztésén LESZ A HANGSÚLY!
Ugyanis ezt a fopen() valamint az egyéb xml_parser...() függvények segítségével megtudom oldani.
...és most jön a LÉNYEG! Feltéve, ha a fopen() függvénnyel EL TUDOM ÉRNI a távoli kiszolgálót!
Lássunk egy példát:eddig minden szép és jó... amennyiben el tudom érni a fent említett URL-t mert, ha NEM akkor már bibi van!
...kapom a szép kis hibaüzeneteket:
Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Nincs ilyen ismert állomás. bla, bla, bla...index.php on line 138
Warning: fopen(http://domain.com/mappa/local/XML_file?param1=value1¶m2=value2&u_id=5437864&u_key=135fc4684ed8435)
[function.fopen]: failed to open stream: No error in bla, bla, bla...index.php on line 143
Warning: feof(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 144
Warning: fgets(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 145
Warning: feof(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 144
Warning: fgets(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 145
.............again and again and again
és ez addig megy, míg le nem hal a böngésző. mindenesetre az oldalam ilyenkor már atomjaira hullott
Oké, most módosítunk kicsit a kódon, hogy ez ha lehet ne történjen meg:
$xml_url = "http://domain.com/mappa/local/XML_file?param1=value1¶..............lásd(fent)!";
$fa = fopen( $xml_url, "r") or die("Nincs ilyen url!"); //Ha nincs, akkor b*sszon oda!
while (!feof ($fa))
$xml_data .= fgets($fa, 4096);
fclose ($fa);
Rendben! Oda is b*szott! :-DDD
...mostmár csak ennyit ír ki hibaüzenetként:
Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Nincs ilyen ismert állomás. bla, bla, bla...index.php on line 138
Warning: fopen(http://domain.com/mappa/local/XML_file?param1=value1¶m2=value2&u_id=5437864&u_key=135fc4684ed8435)
[function.fopen]: failed to open stream: No error in bla, bla, bla...index.php on line 143
Nincs ilyen url!
de legalább megállt a gecsi. :-P Ez szép és jó... LENNE, de a fél oldalam nem töltött be, hogy kúrj*n kecskét! :-DDD
Ergo: Ugyanott vagyok ahol a part szakad, mindkét megoldással. LóóóL
Próbálkoztam mindenféle megoldással, hogy miként tudnám megállapítani a fopen() függvény meghívása előtt, hogy
elérhető-e az adott URL, de úgy érzem elég reménytelen a dolog. Sehogy sem sikerült. :(
A referenciában is körül néztem, de a leggyakoribb megjegyzés: a "This function will not work on remote files as the file to be examined... the servers filesystem" volt.
A google-t és a fórumokat böngészem már órák óta, de semmi használható.
Magyarán azt szeretném elérni, hogy ne haljon le az oldalam egy távoli fájl elérhetetlensége miatt.
Mindössze néhány XML-ben található adatért cserébe lehal az egész oldalam? Hát micsoda trehány dolog ez? Apppááám! :-DDD
FÜGGETLENSÉÉÉG! FÜGGETLENSÉÉÉG!
Az XML-ben található adatok KELLENEK, de nem bármi áron!
Van valami megoldás? Tud nekem valaki segíteni?
Előre is köszi a válaszokat és bocsi a hosszú szövegért!
Reptile
■ A problémám a következő:
Van egy saját oldalam, legyen a neve (index.php) az xy.hu domainen.
Aztán van egy távoli nevezzük úgy server (!nem a sajátom, erre nincs semmilyen ráhatásom!), ami adatokat szolgáltat nekem egy XML fájl segítségével a következő URL-en keresztül:
Pl.: http://domain.com/mappa/local/XML_file?param1=value1¶m2=value2&u_id=5437864&u_key=135fc4684ed8435 (az XML fájlnak nincs kiterjesztése)
tehát...
Az XML fileból kiolvasott adatokat az index.php fájlomba fogom beilleszteni. FIGYELEM! NEM az adatok KIOLVASÁSÁN, illetőleg azutáni beillesztésén LESZ A HANGSÚLY!
Ugyanis ezt a fopen() valamint az egyéb xml_parser...() függvények segítségével megtudom oldani.
...és most jön a LÉNYEG! Feltéve, ha a fopen() függvénnyel EL TUDOM ÉRNI a távoli kiszolgálót!
Lássunk egy példát:
<?php
$xml_url = "http://domain.com/mappa/local/XML_file?param1=value1¶..............lásd(fent)!";
$fa = fopen( $xml_url, "r");
while (!feof ($fa))
$xml_data .= fgets($fa, 4096);
fclose ($fa);
?>
...kapom a szép kis hibaüzeneteket:
Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Nincs ilyen ismert állomás. bla, bla, bla...index.php on line 138
Warning: fopen(http://domain.com/mappa/local/XML_file?param1=value1¶m2=value2&u_id=5437864&u_key=135fc4684ed8435)
[function.fopen]: failed to open stream: No error in bla, bla, bla...index.php on line 143
Warning: feof(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 144
Warning: fgets(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 145
Warning: feof(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 144
Warning: fgets(): supplied argument is not a valid stream resource in C:\AppServ\www\Weather\weather_xml.php on line 145
.............again and again and again
és ez addig megy, míg le nem hal a böngésző. mindenesetre az oldalam ilyenkor már atomjaira hullott
Oké, most módosítunk kicsit a kódon, hogy ez ha lehet ne történjen meg:
$xml_url = "http://domain.com/mappa/local/XML_file?param1=value1¶..............lásd(fent)!";
$fa = fopen( $xml_url, "r") or die("Nincs ilyen url!"); //Ha nincs, akkor b*sszon oda!
while (!feof ($fa))
$xml_data .= fgets($fa, 4096);
fclose ($fa);
Rendben! Oda is b*szott! :-DDD
...mostmár csak ennyit ír ki hibaüzenetként:
Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Nincs ilyen ismert állomás. bla, bla, bla...index.php on line 138
Warning: fopen(http://domain.com/mappa/local/XML_file?param1=value1¶m2=value2&u_id=5437864&u_key=135fc4684ed8435)
[function.fopen]: failed to open stream: No error in bla, bla, bla...index.php on line 143
Nincs ilyen url!
de legalább megállt a gecsi. :-P Ez szép és jó... LENNE, de a fél oldalam nem töltött be, hogy kúrj*n kecskét! :-DDD
Ergo: Ugyanott vagyok ahol a part szakad, mindkét megoldással. LóóóL
Próbálkoztam mindenféle megoldással, hogy miként tudnám megállapítani a fopen() függvény meghívása előtt, hogy
elérhető-e az adott URL, de úgy érzem elég reménytelen a dolog. Sehogy sem sikerült. :(
A referenciában is körül néztem, de a leggyakoribb megjegyzés: a "This function will not work on remote files as the file to be examined... the servers filesystem" volt.
A google-t és a fórumokat böngészem már órák óta, de semmi használható.
Magyarán azt szeretném elérni, hogy ne haljon le az oldalam egy távoli fájl elérhetetlensége miatt.
Mindössze néhány XML-ben található adatért cserébe lehal az egész oldalam? Hát micsoda trehány dolog ez? Apppááám! :-DDD
FÜGGETLENSÉÉÉG! FÜGGETLENSÉÉÉG!
Az XML-ben található adatok KELLENEK, de nem bármi áron!
Van valami megoldás? Tud nekem valaki segíteni?
Előre is köszi a válaszokat és bocsi a hosszú szövegért!
Reptile
@ és crontab
viszont jobban jársz szerintem, ha crontabbal olvasod az xml-t és lemented, majd az oldaladból azt olvasod. mert ha az oldalból olvasod és nem éri el az xml-t, akkor egy jó ideig nem tud teljesen betöltődni az oldal. ez viszont idegesítő lehet a látogatóknak.
cache
Az időnként lekérés praktikusan lehet egy háttérben futó időzített művelettel is (cron).
Annak nem sok értelme van, hogy a saját oldalad minden kiszolgálása alkalmával futásidőben fordulsz a távoli oldalhoz - lassú és bizonytalan (ahogy írod is).
rtfm, my dear;)
Ahogy elnézem, arról papol neked a kis drága, hogy nem valid stream resource, amit meg akarsz vele etetni.
What about checkin' it? Így hirtelen csak ezeket a függvényeket találtam, amik segíthetnek:
http://hu.php.net/manual/en/function.get-resource-type.php
http://hu.php.net/manual/en/function.is-resource.php
http://hu.php.net/manual/en/function.gettype.php
legközelebb nyugodj meg kérdezés előtt
Az elszórtan előforduló ordibálásod még felfogom az indulatodnak, és elnézem, de a trágár beszéd szerintem nem való a weblabor hasábjaira.
"Előre is köszi a válaszokat és bocsi a hosszú szövegért!"
Fele ilyen hosszú lenne a szöveg ha az indulataidat kihagytad volna belőle.
re:mindenre
Először is szertném megköszönni a válaszokat! Nagyon rendes tőletek hogy foglalkoztatok a témával.
Duplabe neked külön köszönet, hogy felnyitottad a szemem a @fopen -el kapcsolatban! Aszem ezen az úton haladok tovább úgy néz ki menni fog a dolog ahogy én szeretném. :-)
És köszi Thom neked is és Numennek is! Köszi köszi köszi! Köszi hogy a szövegem fikázása helyett a segítségnyújtásra törekedtetek de télleg!
Igaz hogy nem említettem néhány dolgot a kóddal kapcsolatosan... szóval igaz amit írtok, a távoli oldalhoz futásidőben történő kéréssel kapcsolatban, de jelen estben tulajdonképpen lényegtelen.
Az XML feldolgozása után az adatok nyomban az adatbázisba vándorolnak és ott is maradnak egészen a következő XML lekérdezéséig. (ezek ritkán vannak kb.2-3óránként) és onnan töltödnek be az oldalra, szóval megkímélek mindenkit :)
A tipusellenőrzések ez esetben használhatatlanok, mint mondottam végignéztem, de azért köszi! ;)
Végül meg csak annyit drága Sorkprog hogy én totál nyugodt vagyok. :) Tisztában vagyok a netikettel, nem kell aggódnod. A nagybetűket pedig csak a minél hangsúlyosabb kiemelések végett, ill. a félreértések elkerülése érdekében írtam, attól függetlenül, hogy valójában mit jelentenek. Kicsit már szétszort vagyok elvégre nem aludtam már tegnap reggel óta. Talán azért lett ilyen. Ha ismernél akkor értenéd. Tudom nem is akarsz ismerni, nem kell a fleós válasz tudom anélkül is. :D Nem tudtam hogy ennyire érzékenyek vagytok az ilyen dolgokra. Annyira azért nem vittem túlzásba. Legközelebb nem írok ilyeneket és külön bocsánatot kérek a helytelen viselkedésemért! Rendben? Béke! ;)
Mégegyszer köszönöm a segítséget! :))
Reptile
off: béke
Nem csak azért írtam mert annyira zavarta volna csőröm az az egy-két trágár szó. Hanem azért is mert rengeteg olyan mondat, fél mondat van benne ami teljesen felesleges, érdektelen a szövegben. Azt kell beleírni a kérdésbe ami fontos lehet, nem többet.
Ordibáláshoz: tudom én hogy azt azért írtad úgy hogy kiemeld, de szerintem elég vastagon írni a szót és ugyanúgy kitűnik a szövegből.
Ja és hogy nem legyek álszent: én is szoktam rondán beszélni, sőt. Na de nem igen szoktam leírni őket, pláne nem akkor amikor kérdezek és szeretném hogy ha normálisan válaszokat kapnék. Gondold el ha válasz helyett, elküldtek volna a halálba mondván tanulj meg kérdezni először. meg ajánlották volna ezt: http://esr.fsf.hu/smart-questions_hu.html . Ehhez képest tök jó a weblabor, nem igaz? hisz teljesen normális válaszokat kaptál. (most tényleg sok oldalon a trágár szavakért cserébe csúnyán vissza szóltak volna. [Nem is járok ilyen oldalakra.])
"Nem tudtam hogy ennyire érzékenyek vagytok..."
Szerintem nem vagyok érzékeny se én, se más "weblaboros". Mert ha így lenne akkor már nem lenne meg ez a topic. (már simán törölték volna)
Ja még valami azt honnan a jó fenéből veszed hogy nem akarlak megismerni ? :)
Mégvalami: a trágár beszédet leszámolva a stílusoddal semmi bajom, igaz szokatlan a weblaboron és úgy egyébként a szakmai oldalakon, de ettől függetlenül semmi bajom nincs vele. tényleg.