<?php
header('Content-Type:text/html;charset=utf-8');
date_default_timezone_set('PRC'); //设置中国时区（北京时间）

// ---------------------------------------------------------------------------
// 每日自动更新触发：仅在"今天还没更新过"时，把第一个访客导向更新页。
//
// 原逻辑存在一个会让全站瘫痪的问题：日期标志文件 PPQSQL.PPQSQL 只在
// API.php 全部跑完之后才写入。一旦采集中途超时、报错或资源站异常，
// 标志就永远停在昨天，于是每一个访客都会被反复跳转，网站 100% 打不开。
//
// 这里补三道保险：
//   1) 只认真人访客。所有页面（含详情页）最终都会走 index.php，而
//      Facebook 等爬虫每秒抓几十个详情页。实测北京零点后 35 秒内，
//      3 次机会就被爬虫全部用光，真人根本看不到更新页。
//   2) 触发即记一次"尝试"（PPQSQL/tmp/daily_attempt.json），当天尝试次数
//      达到上限后不再劫持访客；
//   3) 距当天首次尝试超过时限后也不再劫持。
// 三者任一命中，就放弃今天的自动更新，让访客正常浏览，等次日或手动采集。
// ---------------------------------------------------------------------------

$today = date('Ymd');

// ---- 保险 1：爬虫 / 空 UA 一律放行，不占用今天的名额 ----
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? (string)$_SERVER['HTTP_USER_AGENT'] : '';
if ($ua === '' || preg_match('/(bot|crawler|spider|slurp|externalagent|externalhit|facebookexternalhit|meta-externalagent|curl|wget|python|headless|monitor|preview|feedfetcher|semrush|ahrefs|applebot|petalbot|bytespider|amazonbot|go-http-client|okhttp|scrapy|httpie|postman|java\/|libwww|php\/|node-fetch|axios|scrap|spider)/i', $ua)) {
    return;   // 不是真人，直接放行
}

$root_dir  = dirname(dirname(__DIR__));                 // 站点根目录
$flag_file = $root_dir . '/PPQSQL.PPQSQL';
$tmp_dir   = $root_dir . '/PPQSQL/tmp';
$att_file  = $tmp_dir . '/daily_attempt.json';

$max_attempts = 3;    // 每天最多导向更新页几次
$max_minutes  = 15;   // 首次尝试后超过多少分钟不再导向更新页

if (!is_dir($tmp_dir)) { @mkdir($tmp_dir, 0777, true); }

$last = '';
if (is_file($flag_file)) {
    $raw = trim((string)@file_get_contents($flag_file));
    if ($raw !== '') { $last = $raw; }
}
if ($last === $today) {
    return;   // 今天已更新过，正常放行
}

$att = array('date' => '', 'count' => 0, 'first' => 0);
if (is_file($att_file)) {
    $decoded = @json_decode((string)@file_get_contents($att_file), true);
    if (is_array($decoded)) { $att = array_merge($att, $decoded); }
}
if ($att['date'] !== $today || (int)$att['first'] <= 0) {
    $att = array('date' => $today, 'count' => 0, 'first' => time());
}

$too_many = ((int)$att['count'] >= $max_attempts);
$too_old  = ((int)$att['first'] > 0 && (time() - (int)$att['first']) > $max_minutes * 60);

if ($too_many || $too_old) {
    // 今天的自动更新放弃，不再拦截访客
    return;
}

$att['count'] = (int)$att['count'] + 1;
@file_put_contents($att_file, json_encode($att, JSON_UNESCAPED_UNICODE));
?>
<script type="text/javascript">
　　window.location.href="/PPQSQL/index.php";
　　</script>
<?php
exit;
