You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何每隔一分钟加载数组中的网站?禁用sleep,求JS/Cron实现方案

解决方案:定时加载不同网站(无阻塞)

首先得说下你这段PHP代码为啥行不通:当你发送header("Location: $page")后,浏览器会立刻跳转到目标页面,剩下的sleep(5)和循环代码根本不会被执行——所以第二个页面永远没机会加载,而且PHP的sleep本身就是阻塞式的,就算能执行,用户体验也极差。

下面给你两个靠谱的无阻塞方案,分别适合前端浏览器场景和服务器端场景:


方案一:前端JavaScript实现(适合用户浏览器自动跳转)

这个方案完全在浏览器端运行,用非阻塞的定时器来控制跳转,不会卡住页面。你只需要创建一个简单的HTML文件,让用户打开它即可:

<!DOCTYPE html>
<html>
<head>
    <title>自动页面切换器</title>
    <style>
        body { text-align: center; padding: 50px; font-family: Arial; }
    </style>
</head>
<body>
    <p>即将跳转到第一个页面,之后每隔1分钟自动切换...</p>
    <p>如果未自动跳转,请<a id="manualLink" href="#">点击这里</a></p>

    <script>
        // 配置要加载的网站列表
        const pages = ["http://www.google.com", "http://www.amazon.de"];
        let currentIndex = 0;
        const manualLink = document.getElementById('manualLink');

        // 初始化:设置第一个页面的手动跳转链接
        manualLink.href = pages[currentIndex];

        // 延迟1秒跳转,给用户看提示的时间
        setTimeout(() => {
            window.location.href = pages[currentIndex];
            currentIndex++;
        }, 1000);

        // 每隔1分钟切换到下一个页面
        const intervalId = setInterval(() => {
            if (currentIndex < pages.length) {
                window.location.href = pages[currentIndex];
                manualLink.href = pages[currentIndex];
                currentIndex++;
                // 要是需要循环加载,就解开下面这行注释
                // if (currentIndex >= pages.length) currentIndex = 0;
            } else {
                // 所有页面加载完成后停止定时器
                clearInterval(intervalId);
                document.querySelector('p').textContent = '所有页面已加载完成!';
            }
        }, 60000); // 60000毫秒 = 1分钟
    </script>
</body>
</html>

说明:

  • 用户打开这个HTML后,会先看到提示,1秒后跳转到google.com;
  • 1分钟后自动跳转到amazon.de,之后停止(如果需要循环加载,解开注释即可);
  • 加入了手动跳转链接,避免浏览器阻止自动跳转的情况。

方案二:服务器端Cron任务实现(适合监控/爬虫等场景)

如果是需要服务器定时触发页面加载(比如用无头浏览器监控网站),可以用Cron+PHP的组合,完全无阻塞:

步骤1:编写PHP脚本(page_rotator.php)

这个脚本会记录当前加载的页面索引,每次被触发时跳转到对应页面,然后更新索引:

<?php
// 网站列表
$pages = ["http://www.google.com", "http://www.amazon.de"];
// 存储当前索引的文件(确保脚本有读写权限)
$indexFile = __DIR__ . '/current_index.txt';

// 读取当前索引,默认从0开始
$currentIndex = file_exists($indexFile) ? (int)file_get_contents($indexFile) : 0;

// 跳转到目标页面
header("Location: " . $pages[$currentIndex]);

// 更新下一次要加载的索引(循环加载)
$nextIndex = ($currentIndex + 1) % count($pages);
file_put_contents($indexFile, $nextIndex);
?>

步骤2:设置Cron定时任务

在Linux服务器上,打开Cron编辑界面:

crontab -e

添加以下内容,设置每隔1分钟触发一次脚本:

*/1 * * * * curl http://your-domain.com/page_rotator.php

说明:

  • Cron是服务器的定时任务工具,*/1 * * * *表示每分钟执行一次;
  • 每次执行脚本时,会自动跳转到下一个网站,循环往复;
  • 确保current_index.txt文件有读写权限(可以用chmod 644 current_index.txt设置)。

内容的提问来源于stack exchange,提问作者TonyTony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:55:34