• User Attivo

    Codice php in background

    Buongiorno, ho un sito in php+database mysql in cui ho la necessità di aggiornare la sitemap a ogni contenuto inserito dall'utente.

    Fino ad ora aggiornavo la sitemap inserendo il codice php nella pagina di "nuovo contenuto caricato con successo".

    Ora che il database è diventato grande lo script ci mette qualche secondo in più a essere eseguito.

    Come posso generare la sitemap in "background" a ogni aggiunta di contenuti da parte dell'utente senza però rallentarlo?

    Mi servirebbe una specie di crontab che viene attivato a ogni aggiunta di un nuovo contenuto...forse la funzione exec?

    Grazie


  • User

    Se hai un VPS o un server dedicato usa cron e wget per eseguire lo script in background in automatico


  • User Attivo

    Ciao zanna86,
    secondo me ti conviene creare le sitemap dinamicamente in php?

    Ovvero, crei un file chiamato sitemap.php e all'interno fai le query per stamparti dinamicamente la sitemap in tempo reale, senza generare un file xml.

    Con l'url rewrite trasformi sitemap.php in sitemap.xml.

    Quando hai migliaia e migliaia di pagine, risulta altrimenti impossibile aggiungere costantemente valori fisicamente ai file xml.. . e quando devi eliminare un contenuto come fai a eliminarlo anche dal file xml? Dovresti ricercare ogni volta nel documento e sarebbe troppo dispendioso.

    Io utilizzo il sistema sopra citato e mi trovo molto bene a gestire diversi migliaia di contenuti dividendoli in tante sitemap e gestendole con una Index Sitemap, che per l'appunto funziona da indice.

    Ciao

    PS: Aprendo queste sitemap in php (anche con l'url riscritto in XML), Firefox si accorge che non sono file xml e li visualizza non correttamente, mentre IE le visualizza correttamente. Il webmaster tool di google legge e indicizza perfattemente sitemap scritte in questo modo.


  • User

    Anch'io uso le sitemap dinamiche dove conviene (siti fino a qualche migliaio di pagine ma non di più)
    Firefox non ha nessun problema a visualizzare le sitemap xml, basta inserire il tag xml corretto in apertura e inviare l'header Content-Type appropriato, poi aprendole da Firefox ti viene visualizzata la struttura ad albero


  • User Attivo

    Hai perfettamente ragione, il mio problema era che omettevo il Content-type.

    Perchè va bene solo per alcune migliaia di pagine?


  • User

    Sitemap di decine di migliaia di pagine generate "al volo" di solito sono molto pesanti (poi dipende anche dal tipo di query necessarie per generarle).
    Per evitare rallentamenti nella navigazione degli utenti conviene generarle, sempre via script, magari in momenti di poco carico (notte fonda di solito è l'ideale), poi salvarle ed eventualmente e già che ci sei comprimerle.
    Senza contare poi che se si va oltre le 50000 pagine bisogna per forza dividere la sitemap e quindi torna utile generare tutte le sitemap prima e alla fine il file indice


  • User Attivo

    Io già divido la sitemap in centinaia di "sotto-sitemap" suddivise per categoria, gestite da una Index Sitemap che le elenca tutte.
    Inoltre, ogni sitemap che comprende più di 25.000 pagine la "splitto".
    Per ora non ho rallentamenti, ma dovrei vedere quando i contenuti aumenteranno ulteriormente.

    Ti ringrazio, se dovessi avere problemi penso che farò come hai suggerito.


  • User

    Tanto per darti un riferimento lo script che mi genera le sitemap per 500000 url richiede più di 70 secondi di esecuzione, essendo su un server dedicato non ho grossi problemi di prestazioni, però ho preferito giocare d'anticipo e ottimizzare la generazione delle sitemap quando so che il carico è più basso.