如何每隔一分钟加载数组中的网站?禁用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
相关产品推荐
相关产品推荐

