Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Strano problema con simplexml_load_file

    Ciao a tutti,
    ho uno script semplice semplice che gira da un paio d'anni senza nessun problema, ora da 2 giorni sta facendo i capricci.
    In pratica c'è un file xml su un server remoto (file e server non sono controllati da me), io in pratica ho un cron che ogni ora mi preleva il feed e con i dati all'interno mi riempe un db SQL.
    Lo script è molto semplice e come detto funzionava bene fino a qualche giorno fa
    Codice PHP:
    <?php 
    error_reporting
    (E_ALL);  

    ## Inclusione classe import ## 
    require "/var/www/vhosts/sito.com/subdomains/tlb/httpdocs/librerie/mysql.php"
    require 
    "/var/www/vhosts/sito.com/subdomains/tlb/httpdocs/librerie/import.php";

    ## Inizializzo l'oggetto DB e mi connetto al database ## 
    $DB = new db
    $DB->doconnect();  

    ## Inizializzo l'oggetto import ## 
    $IMPORT = new import('sito');  

    ## Link al FEED XML ## 
    $FEED "http://www.sito.it/feed.XML";  

    ## Inizializzo l'oggetto SimpleXML ## 
    $xml simplexml_load_file($FEEDNULL); 
    if(!
    $xml)    $IMPORT->write_log("Feed non trovato."true);
    .....
    Ora da paio di giorni il cron mi restituisce dei warning riguardo la funzione simplexml (errori nell'apertura o nella mancanza di alcuni tag, tra l'altro fa riferimento a tag tipo <body>, <html>,

    che nel file xml non ci sono), e warning a parte l'oggetto $xml non viene inizializzato.

    Ora io per cercare di capire quale potesse essere il problema ho provato a richiamare lo script tramite browser e qui mi sono accorto della stranezza, quando lancio lo script ottengo i vari warning ed il log di feed non trovato, ma refresho la pagina del browser lo script funziona correttamente e continua a funzionare ad ogni chiamata successiva per circa 15-30 (non ho verificato bene il tempo).
    Ovviamente dopo 1 ora, quando è il cron ad avviare lo script stessi warning che mi bloccano il tutto.

    Qualcuno a qualche idea su quale possa essere il problema e come risolverlo?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dovresti riportare più in dettaglio gli avvisi... non è che la pagina ogni tanto non è correttamente formata in xml?

  3. #3
    Il feed xml è corretto, altrimenti i warning dovrei riceverli random, invece li ricevo sempre solo alla prima chiamata, dal refresh in poi non ho nessun problema.
    Tanto per dire, al momento ho risolto così (metodo un pò barbaro lo ammetto :P )

    Codice PHP:
    ## Inizializzo l'oggetto SimpleXML ## 
    $xml = @simplexml_load_file($FEED); 
    $xml simplexml_load_file($FEED);  
    if(!
    $xml)    $IMPORT->write_log("Feed non trovato."true); 
    Non so spiegarlo meglio, ma è come se la prima chiamata di simplexml_load_file non riesca a caricare tutto il file (per un problema di timeout o altro) e la seconda chiamata completi il lavoro

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi postare ESATTAMENTE almeno la prima parte dei warning (se sono tanti)

  5. #5
    codice:
    Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.sito.it/feed.XML:10: parser error : Opening and ending tag mismatch: META line 8 and HEAD in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: </HEAD> in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.sito.it/feed.XML:11: parser error : Opening and ending tag mismatch: P line 11 and BODY in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: <BODY>
    
    </BODY> in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.sito.it/feed.XML:12: parser error : Opening and ending tag mismatch: BODY line 11 and HTML in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: </HTML> in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.sito.it/feed.XML:13: parser error : Premature end of data in tag META line 7 in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.sito.it/feed.XML:13: parser error : Premature end of data in tag META line 6 in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.sito.it/feed.XML:13: parser error : Premature end of data in tag HEAD line 5 in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.sito.it/feed.XML:13: parser error : Premature end of data in tag HTML line 4 in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/vhosts/sito.com/subdomains/tlb/httpdocs/cron.php on line 20
    Feed non trovato.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi provare se così funge? ... :

    Codice PHP:
    // al posto di:
    //    $xml = simplexml_load_file($FEED); 
    // prova:
    $xmldata file_get_contents($FEED);
    // NOTA: qui potresti stampare a video $xmldata
    // con "var_export($xmldata);"
    // o "loggarla" su un txt esterno
    // così da verificare cosa viene letto effettivamente
    // e se in una chiamata successiva cambia il contenuto
    $xml simplexml_load_string($xmldata); 

  7. #7
    Allora, al primo accesso allo script ho sempre i warning, ma compaiono per pochi secondi, poi mi compare l'output del var_export che è il contenuto corretto del file xml ma c'è un apice singolo prima del tag xml (nel file xml sul server non c'è)

    EDIT: L'apice è dato da var_export, con echo vedo correttamente il contenuto del file xml senza apici

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non ho capito cosa è il "primo" accesso... dicevo di provare con quanto ti ho postato e verificare se funziona direttamente...

  9. #9
    Originariamente inviato da eiyen
    non ho capito cosa è il "primo" accesso... dicevo di provare con quanto ti ho postato e verificare se funziona direttamente...
    E' la prima volta che avvio lo script, le volte successive non ho nessun warning (per i soliti 15-30 minuti)

  10. #10
    Originariamente inviato da cubalibre810
    E' la prima volta che avvio lo script, le volte successive non ho nessun warning (per i soliti 15-30 minuti)
    Prova a rimuovere l'error_reporting e vedi che non ti da nessun warning

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.