<?php
/**
 * 抓取指定子目录并生成 sitemap.xml
 */

// 1. 解除时间与内存限制
set_time_limit(0);
ini_set('memory_limit', '512M');
error_reporting(0);
@ini_set('display_errors', 0);

// 2. 基础配置
$baseUrl   = 'https://bz.crmeb.kaifacn.com/';                      // 您的主域名 (结尾不要加 /)
$subDir    = 'xixi';                              // 要抓取的指定目录名称
$targetDir = __DIR__ . '/' . $subDir;               // 绝对路径: /www/wwwroot/.../xiaoyu
$outputFile = __DIR__ . '/sitemap.xml';             // sitemap.xml 保存路径
$maxUrls   = 10000;                                 // 抓取上限数量
$allowedExts = array('html', 'htm', 'php');         // 抓取的文件后缀

echo "开始扫描目录 [/{$subDir}] 生成 Sitemap...<br>\n";

// 3. 检查指定的目录是否存在
if (!is_dir($targetDir)) {
    die("<b>错误：</b>找不到指定目录 [{$targetDir}]，请检查目录名称是否正确！");
}

// 4. 初始化 XMLWriter (流式写入)
$xml = new XMLWriter();
$xml->openURI($outputFile);
$xml->startDocument('1.0', 'UTF-8');
$xml->setIndent(true);

$xml->startElement('urlset');
$xml->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');

// 写入首页
$xml->startElement('url');
$xml->writeElement('loc', $baseUrl . '/');
$xml->writeElement('lastmod', date('Y-m-d'));
$xml->writeElement('changefreq', 'daily');
$xml->writeElement('priority', '1.0');
$xml->endElement();

$count = 1;

// 5. 扫描指定目录下的文件
if ($handle = opendir($targetDir)) {
    while (false !== ($file = readdir($handle))) {
        if ($count >= $maxUrls) break;

        // 过滤系统目录 . 和 .. 防止报错
        if ($file === '.' || $file === '..') {
            continue;
        }

        $filePath = $targetDir . DIRECTORY_SEPARATOR . $file;

        // 仅抓取文件（忽略子文件夹）
        if (is_file($filePath)) {
            // 跳过隐藏文件
            if (substr($file, 0, 1) === '.') {
                continue;
            }

            $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
            if (in_array($ext, $allowedExts)) {
                $lastMod = date('Y-m-d', filemtime($filePath));
                
                // 拼接完整 URL: http://123.com/xiaoyu/1.html
                $fullUrl = $baseUrl . '/' . $subDir . '/' . rawurlencode($file);

                $xml->startElement('url');
                $xml->writeElement('loc', $fullUrl);
                $xml->writeElement('lastmod', $lastMod);
                $xml->writeElement('changefreq', 'weekly');
                $xml->writeElement('priority', '0.8');
                $xml->endElement();

                $count++;
            }
        }
    }
    closedir($handle);
}

// 6. 结束并输出
$xml->endElement(); // </urlset>
$xml->endDocument();
$xml->flush();

echo "<b>抓取完成！成功写入 {$count} 个链接。</b><br>\n";
echo "静态文件保存路径：{$outputFile}<br>\n";
echo "预览链接：<a href='{$baseUrl}/sitemap.xml' target='_blank'>{$baseUrl}/sitemap.xml</a>\n";