PHP每15分鐘自動更新網站地圖(減少伺服器消耗)

2020-07-16 10:06:06
最近在弄一個短網址,自己寫的程式碼。鍛鍊一下自己。在做html網站地圖這塊,想著把所有生成的短連線都展示出來,方便收錄。就寫了一個sitemap.php,後來發現,如果以後人流量大或者資料過多的話,伺服器負擔就會特別重,假如有10w條資料,每個人存取的時候都會從資料庫索引這10w條資料,一秒鐘有100個人存取,伺服器根本負擔不過來。然後就萌生了生成html地圖這個想法。

由於學藝不精,可能思路上有些不對的。希望有更好思路能夠批評指正!

原理:

需要三個檔案:

  • sitemap.html (這個檔案為系統自動生成,sitemap.php的克隆版)

  • sitemap.php (主要頁面,決定頁面的樣式等,完全=sitemap.html)

  • timeSitemap.php (為更新程式,生成html頁面。可在監控寶設定監控。)

sitemap.php為頁面檔案,sitemap.html為sitemap.php的克隆版,監控寶設定定時監控timeSitemap.php檔案,實現每15分鐘生成網站地圖,當然,頻率是按照監控寶的監控頻率來決定,如果地圖生成失敗,會返回404,監控寶會報警。sitemap.xml同理

下面共用程式碼(用使用的mysql查詢等類為自己簡單封裝的資料庫類,這裡就不展示了):

sitemap.php

<?php
/*
@   sitemap html版地圖
*/
// 引入資料庫操作類
require_once 'c/class.class.php';
// 引入系統引數
$config = require 'c/config.php';
?>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>網站地圖 - <?php echo $config['web_title']; ?></title>
<meta name="keywords" content="<?php echo $config['web_keywords'];?>">
<meta name="description" content="<?php echo $config['web_description']; ?>">
<link href="<?php //echo $config['web_url'];?>/css/bootstrap.min.css" rel='stylesheet' type='text/css'>
<!--
<link href="<?php //echo $config['web_url'];?>/css/style.css" rel='stylesheet' type='text/css'>
<link href="<?php //echo $config['web_url'];?>/css/media.css" rel='stylesheet' type='text/css'>
<script src="<?php //echo $config['web_url'];?>/css/jquery-3.1.1.min.js"></script>
-->
<link type="favicon" rel="shortcut icon" href="<?php //echo $config['web_url'];?>/favicon.ico" />
<link type="favicon" rel="icon" href="<?php //echo $config['web_url'];?>/favicon.ico" />
<style>
.table tr {
text-align: center;
}
a {
display: inline-block;
padding: 10px;
}
</style>
</head>
<body>
<!--先提示-->
<?php
// <!-- 取出所有短網址 -->
$cons = new con();
$consSql = "select * from urls order by id desc";
$consQuery = $cons->query($consSql);
// >> 總數量
$consNum = mysql_num_rows($consQuery);
?>
<div class="container">
<!--<table class="table table-striped table-bordered table-hover table-condensed">-->
<hr>
<div style='text-align:center;height:35px;line-height:35px;font-weight:bold;'>
共<?php echo $consNum; ?>條資料</div><div style='text-align:center;'>本頁面每15分鐘更新一次
</div>
</hr>
本站連結:<a href="http://bba.fun">bba.fun短網址</a><a href="http://bba.fun/page/api">api介面</a><a href="http://bba.fun/sitemap.html">網站地圖</a>
<br>
生成連結:
<br>
<?php
// >> 顯示總數量
echo "";
// >> 開始迴圈取出
while($rows = mysql_fetch_array($consQuery)){
echo "<a href='{$rows['short_url']}' target='_blank' rel='external nofollow'>".$rows['short_url']."</a>";
}
?>
<!--</table>-->
<div style='text-align:center;height:35px;line-height:35px;font-weight:bold;'>2017? <a href="<?php echo $config['web_url'];?>"><?php echo $config['web_title']; ?></a></div><hr>
</div>
</body>
</html>

timeSitemap.php

<?php
/*
@   定時更新網站地圖
*/
// 定義獲取的url
$url = "http://bba.fun/sitemap.php";
// 定網站地圖名字
$name = "sitemap.html";
// 獲取原始碼
$html = file_get_contents($url);
// 寫入html
$write = file_put_contents($name,$html);
if($write){
header("HTTP/1.1 200");
}else {
header("HTTP/1.1 404");
}
?>

以上就是PHP每15分鐘自動更新網站地圖(減少伺服器消耗)的詳細內容,更多請關注TW511.COM其它相關文章!