• User Attivo

    Dividere in più file site map

    Salve ragazzi, già tempo fa cercai di risolvere il problema e scrissi sempre sul forum il problema che avevo e che tutt'oggi non sono ancora riuscito a risolvere.
    Veniamo al dunque: Il file della sitemap.xml che genero lanciando lo script mi crea una sitemap molto grande tanto da non permettermi il download con comuni programmi, solo con filezzilla riesco a scaricarlo.

    Veniamo al codice:

    <?
    $root=$_SERVER['DOCUMENT_ROOT'];
    include($root."/inc/config.php");

    $prioritastrutture = "0.5";

    $fp = fopen("sitemap.xml", "w"); (scrive sul server il file sitemap.xml)
    if($fp==false)
    die("unable to create file");
    else {
    fputs($fp, "<?xml version="1.0" encoding="UTF-8"?>\r\n");
    fputs($fp, "<urlset\r\n");
    fputs($fp, "xmlns="/ogle.com/schemas/sitemap/0.84"\r\n");
    fputs($fp, "xmlns:xsi=" w3.org/2001/XMLSchema-instance"\r\n");
    fputs($fp, "xsi:schemaLocation=" google.com/schemas/sitemap/0.84\r\n");
    fputs($fp, " google.com/schemas/sitemap/0.84/sitemap.xsd">\r\n");

    include($root.'/inc/sitemap/primasezione_wr.php'); (prende i link presenti in questa sezione e li scrive sul file sitemap.xml)
    //include($root.'/inc/sitemap/secondasezione_wr.php');
    //include($root.'/inc/sitemap/terzasezione_wr.php');
    //include($root.'/inc/sitemap/quartasezione_wr.php');
    //include($root.'/inc/sitemap/quintasezione_wr.php');

    fputs($fp, "</urlset>\r\n");

    while (!feof($fp)) {
        echo fgets($fp, 1024);
    }
    
    
    fclose($fp);
    

    }
    ?>

    Ora, volendo creare più file generandoli in modo dinamico che non superi ognuno i 50.000 url come potrei modificare il codice?
    In pratica vorrei paginarli in modo dinamico.


  • User Attivo

    Ciao colvi,
    il problema è che il cuore dello script è contenuto nei vari file php richiamati, senza conoscere i quali possiamo fare ben poco.

    Ipotizzo che tutti quei file avranno dei cicli al loro interno: in teoria è sufficiente mettere quindi un contatore e quando questo raggiunge il valore 50000, chiudere il file di *sitemap *ed aprirne un altro.

    Ovviamente il contatore va inizializzato a 0 una sola volta, nel main che hai postato sopra, e resettato a 0 ogni volta che crei un nuovo file.

    Come sempre: se ci dai più info ti aiutiamo meglio...
    😄


  • User Attivo

    @colvi said:

    Salve ragazzi, già tempo fa cercai di risolvere il problema e scrissi sempre sul forum il problema che avevo e che tutt'oggi non sono ancora riuscito a risolvere.
    Veniamo al dunque: Il file della sitemap.xml che genero lanciando lo script mi crea una sitemap molto grande tanto da non permettermi il download con comuni programmi, solo con filezzilla riesco a scaricarlo.

    Veniamo al codice:

    <?
    $root=$_SERVER['DOCUMENT_ROOT'];
    include($root."/inc/config.php");

    $prioritastrutture = "0.5";

    $fp = fopen("sitemap.xml", "w"); (scrive sul server il file sitemap.xml)
    if($fp==false)
    die("unable to create file");
    else {
    fputs($fp, "<?xml version="1.0" encoding="UTF-8"?>\r\n");
    fputs($fp, "<urlset\r\n");
    fputs($fp, "xmlns="/ogle.com/schemas/sitemap/0.84"\r\n");
    fputs($fp, "xmlns:xsi=" w3.org/2001/XMLSchema-instance"\r\n");
    fputs($fp, "xsi:schemaLocation=" google.com/schemas/sitemap/0.84\r\n");
    fputs($fp, " google.com/schemas/sitemap/0.84/sitemap.xsd">\r\n");

    include($root.'/inc/sitemap/primasezione_wr.php'); (prende i link presenti in questa sezione e li scrive sul file sitemap.xml)
    //include($root.'/inc/sitemap/secondasezione_wr.php');
    //include($root.'/inc/sitemap/terzasezione_wr.php');
    //include($root.'/inc/sitemap/quartasezione_wr.php');
    //include($root.'/inc/sitemap/quintasezione_wr.php');

    fputs($fp, "</urlset>\r\n");

    while (!feof($fp)) {
        echo fgets($fp, 1024);
    }
    
    
    fclose($fp);
    

    }
    ?>

    Ora, volendo creare più file generandoli in modo dinamico che non superi ognuno i 50.000 url come potrei modificare il codice?
    In pratica vorrei paginarli in modo dinamico.

    Il cuore del codice richiamato è il seguente:

    <?
    $query_affitto="SELECT * FROM immobile WHERE abilitato='s' AND proposta='affitto' AND offerta_speciale='si' ORDER BY 'id' DESC";
    $result_affitto=mysql_query($query_affitto) or die ($query_affitto);
    $numeroaff=mysql_num_rows($result_affitto);
    ?>
    <?
    if ($numeroaff>0) {
    while ($row_affitto=mysql_fetch_array($result_affitto))
    {

            $query_aff4="SELECT * FROM comune WHERE id=$row_affitto[comune]";
            $result_aff4=mysql_query($query_aff4) or die ($query_aff4);
            $row_aff4=mysql_fetch_array($result_aff4);
            $comune=$row_aff4[nome_comune]; 
            $comune1=str_replace(" ", "_",$comune); 
            $comune2=str_replace("'", "_",$comune1);
            
            $typo1=str_replace(" ", "_",$row_affitto[tipologia]); 
            $typo2=str_replace("'", "_",$typo1);
            $typo3=str_replace(" ", "-",$row_affitto[tipologia]); 
            $typo4=str_replace("'", "-",$typo3);?>
    

    <url>
    <loc>/ita/a-<? echo $comune2; ?>-<? echo $typo2; ?>-in-<? echo $row_affitto[proposta]; ?>-<? echo $row_affitto[id]; ?>.html</loc>
    <lastmod><? echo $datamodifica; ?></lastmod>
    <priority><? echo $prioritaaffitto; ?></priority>
    </url>

    <url>
    <loc>/ita/<? echo $typo4; ?>in<? echo $row_affitto[proposta]; ?>-1.html</loc>
    <lastmod><? echo $datamodifica; ?></lastmod>
    <priority><? echo $prioritaaffitto; ?></priority>
    </url>

    <url>
    <loc>/offerte/<? echo $comune2; ?>/<? echo $row_affitto[proposta]; ?>/<? echo $row_affitto[comune]; ?>/1/index.html</loc>
    <lastmod><? echo $datamodifica; ?></lastmod>
    <priority><? echo $prioritaaffitto; ?></priority>
    </url>

    <? } } ?>

    <url>
    <loc>/case-nel-salento/immobili-in-affitto-1.html</loc>
    <lastmod><? echo $datamodifica; ?></lastmod>
    <priority><? echo $prioritaaffitto; ?></priority>
    </url>

    Grazie Anticipatamente.