<?php
// 设置 XML 文件的保存路径，这里假设为服务器的根目录下的 sitemap.xml
// 注意：通常不建议直接在根目录下保存文件，除非你有充分的理由和权限
$xmlFilePath = $_SERVER['DOCUMENT_ROOT'] . '/video/sitemap_9.xml';
 
// 打开文件句柄，准备写入 XML 内容
$fileHandle = fopen($xmlFilePath, 'w');
 
// 检查文件句柄是否成功打开
if ($fileHandle === false) {
    die('无法打开文件以写入 XML 内容');
}
 
// 写入 XML 声明到文件
fwrite($fileHandle, '<?xml version="1.0" encoding="UTF-8"?>');
fwrite($fileHandle, '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'); // 注意：修正了 XML 命名空间
 
// 假设我们从某个数据源获取所有可能的 TXT 文件
$keywordsFiles = glob("/home/adsimmco/public_html/megamassive.net/video/data/keywords/*.txt");
 $lujingFiles = glob("/home/adsimmco/public_html/megamassive.net/video/data/lujing/*.txt"); // 注意变量名改为$lujingFiles以更准确地反映其内容

// 读取所有路径到一个数组中
$lujingPaths = [];
foreach ($lujingFiles as $lujingFile) {
    $lines = file($lujingFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $lujingPaths = array_merge($lujingPaths, $lines); // 合并所有路径到一个数组
}

// 确保路径数组不为空
if (empty($lujingPaths)) {
    die("No paths found in lujing files.");
}

function getRandomLineFromFile($filePath) {
    // 读取文件内容到数组中，每行是一个数组元素
    $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    if (empty($lines)) {
        return null; // 如果文件为空或没有可读行，返回null
    }
    
    // 从数组中随机选取一行
    $randomLineIndex = array_rand($lines);
    return $lines[$randomLineIndex];
}

// 假设我们要生成1000个URL
$numberOfUrlsToGenerate = 1000;
$urlsGenerated = 0;

 
// 遍历所有关键词文件，直到生成足够的 URL
while ($urlsGenerated < $numberOfUrlsToGenerate && !empty($keywordsFiles)) {
    shuffle($keywordsFiles); // 每次循环前打乱文件数组，以实现更随机的选择
    shuffle($lujingPaths); // 每次循环前也打乱路径数组，以实现更随机的选择（可选）
    
    foreach ($keywordsFiles as $keywordsFile) {
      $keyword = getRandomLineFromFile($keywordsFile);
        if ($keyword !== null) {
            // 从路径数组中随机选择一个路径
            $randomPath = array_shift($lujingPaths); // 或者使用array_rand和对应的访问来获取不删除元素的随机路径
           if (empty($lujingPaths)) {
                $lujingPaths = []; // 清空数组
                foreach ($lujingFiles as $lujingFile) {
                    $lines = file($lujingFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                    $lujingPaths = array_merge($lujingPaths, $lines); // 重新加载路径
                }
                shuffle($lujingPaths); // 重新打乱路径数组
            }
            
            // 构造URL（请替换为您的实际域名）
            $url = "https://".$_SERVER['HTTP_HOST'] .'/'. $randomPath . '=' . urlencode($keyword); // 对关键词进行URL编码以确保有效性

      

            // 写入 URL 信息到文件
            fwrite($fileHandle, "<url>\n");
            fwrite($fileHandle, "    <loc>{$url}</loc>\n");
            fwrite($fileHandle, "    <lastmod>" . gmdate("Y-m-d") . "</lastmod>\n"); // 添加了时间戳和时区信息
            fwrite($fileHandle, "    <changefreq>daily</changefreq>\n"); // 可以根据实际情况调整更改频率
            fwrite($fileHandle, "    <priority>1.0</priority>\n"); // 优先级，0.0 到 1.0 之间
            fwrite($fileHandle, "</url>\n");
            
            $urlsGenerated++;
            
            // 如果已经生成了足够的 URL，则退出循环
            if ($urlsGenerated >= $numberOfUrlsToGenerate) {
                break;
            }
        }
    }
    
    // 如果文件已经用完但还没有生成足够的 URL，可以清空文件数组以便重新使用（可选）
    // 注意：这可能会导致某些关键词被重复使用多次
    if ($urlsGenerated < $numberOfUrlsToGenerate) {
        $keywordsFiles = glob("data/keywords/*.txt"); // 重新获取文件列表（如果文件数量足够，这通常不是必需的）
    }
}
 
// 写入 URL 集合的结束标签到文件
fwrite($fileHandle, '</urlset>');
 
// 关闭文件句柄
fclose($fileHandle);
 
echo "地图已经生成 {$xmlFilePath}.";
?>