[ sojic @ 22.02.2010. 22:04 ] @
Prsiram nekoliko XML fajla:

https://www.brownpapertickets.com/eventfeed/11
https://www.brownpapertickets.com/eventfeed/20
https://www.brownpapertickets.com/eventfeed/21
https://www.brownpapertickets.com/eventfeed/12
.............

Privi pronje OK, ali drugi.... dobijem sledecu gresku

Code:

php parsexml.php > result.txt
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/web45/web/bpt/parsexml.php:32
Stack trace:
#0 /var/www/web45/web/bpt/parsexml.php(32): SimpleXMLElement->__construct('<?xml version="...')
#1 /var/www/web45/web/bpt/parsexml.php(17): parseXML('https://www.bro...')
#2 {main}
  thrown in /var/www/web45/web/bpt/parsexml.php on line 32



[ sojic @ 22.02.2010. 22:16 ] @
Samo informativno, izbacio sam https://www.brownpapertickets.com/eventfeed/20 i skripta jos radi...

Sta je problem u https://www.brownpapertickets.com/eventfeed/20 ??? Kad na isti nacin se generiraju feedove, tekst je u CDATA.... Nije mi jasno!?!?
[ sojic @ 22.02.2010. 23:31 ] @
Ova dva xml-a ne rade!!!

https://www.brownpapertickets.com/eventfeed/17
https://www.brownpapertickets.com/eventfeed/20


Evo sve feedove
$feeds = array (
'https://www.brownpapertickets.com/eventfeed/11'
,'https://www.brownpapertickets.com/eventfeed/21'
,'https://www.brownpapertickets.com/eventfeed/12'
,'https://www.brownpapertickets.com/eventfeed/18'
,'https://www.brownpapertickets.com/eventfeed/19'
,'https://www.brownpapertickets.com/eventfeed/9'
,'https://www.brownpapertickets.com/eventfeed/14'
,'https://www.brownpapertickets.com/eventfeed/13'
,'https://www.brownpapertickets.com/eventfeed/15'
,'https://www.brownpapertickets.com/eventfeed/10'
,'https://www.brownpapertickets.com/eventfeed/16'
,'https://www.brownpapertickets.com/eventfeed/20'
,'https://www.brownpapertickets.com/eventfeed/17'
);

Zadnja dva ne rade.... dobijem gresku:

Code:

[user@k bpt]# php parsexml.php > result.txt
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/web45/web/bpt/parsexml.php:32
Stack trace:
#0 /var/www/web45/web/bpt/parsexml.php(32): SimpleXMLElement->__construct('<?xml version="...')
#1 /var/www/web45/web/bpt/parsexml.php(17): parseXML('https://www.bro...')
#2 {main}
  thrown in /var/www/web45/web/bpt/parsexml.php on line 32
[root@k bpt]# 

[ Goran Rakić @ 23.02.2010. 00:05 ] @
Jesi li siguran da nije timeout? Probaj da povučeš sa file_get_contents (dodaj opciju za veći timeout ako ne prolazi), pa onda da ubaciš u simplexml.
[ sojic @ 23.02.2010. 21:13 ] @
Sadrzaj vadim sa curl

Code:

function parseXML($feedUrl) {    
    echo $feedUrl;
    $curl_handle=curl_init();
    curl_setopt($curl_handle,CURLOPT_URL,$feedUrl);
    curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);
    
    @$xml = new SimpleXMLElement($buffer);

    unset($buffer);
........... i tako dalje


E sad... stavio sam echo na $buffer, i vidim da nije celi feed.

E sad... neki hint oko: Kako da vidim dali je u pitanju memory limit ili timeout? Server je linux ja sam root.
[ Nikola Poša @ 23.02.2010. 22:05 ] @
Samo jedna konstatacija, zašto uopšte ideš sa curl, kad konstruktoru SimpleXMLElement možeš da proslediš URL do tog nekog XML fajla:
Code:
$sxe = new SimpleXMLElement('https://www.brownpapertickets.com/eventfeed/17', null, true);

A ako hoćeš pravu stvar, preporučujem ti da probaš Zend_Feed. Ovde baš imaš primer "konzumiranja" jednog RSS feed-a uz pomoć te komponente.
[ Goran Rakić @ 23.02.2010. 23:44 ] @
@Nikola -1, ne čitaš temu. SimpleXML se buni jer ne može da do timeouta dohvati ceo XML. Moguće da SimpleXML može da primi kontekst kao file_get_contents, ali to ne znam.

@sojic -1, ne čitaš odgovor. Problem je što server ima spor odziv, a XML je veliki. Moraš da postaviš timeout. Ako koristiš urlopen omotač moraš da ubaciš kontekst u file_get_contents koji napraviš pomoću stream_context_create(). Ako koristiš cURL onda podesiš CURLOPT_TIMEOUT za tvoj cURL easy handle.

Zend_Feed je verovatno glupost, ovi dovodi uopšte nisu u RSS formatu, a ne izgledaju ni vremenski složeni da se isplati pisanje namenskog Zend_Feed format adaptera.
[ sojic @ 23.02.2010. 23:50 ] @
Resen problem.

Prepravio sam generiranje feedove.

Inace...

file_get_contents ne koristim posto curl je mnogo brzi (tako kazu, nisam licno testirao: http://stackoverflow.com/quest...rl-what-has-better-performance)

U svaki slucaj hvala, bilo je korisno.