溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP實現(xiàn)隔15分鐘自動更新網(wǎng)站地圖功能

發(fā)布時間:2020-05-22 14:36:46 來源:億速云 閱讀:234 作者:鴿子 欄目:編程語言

最近在弄一個短網(wǎng)址,自己寫的代碼。鍛煉一下自己。在做html網(wǎng)站地圖這塊,想著把所有生成的短連接都展示出來,方便收錄。就寫了一個sitemap.php,后來發(fā)現(xiàn),如果以后人流量大或者數(shù)據(jù)過多的話,服務(wù)器負擔就會特別重,假如有10w條數(shù)據(jù),每個人訪問的時候都會從數(shù)據(jù)庫索引這10w條數(shù)據(jù),一秒鐘有100個人訪問,服務(wù)器根本負擔不過來。然后就萌生了生成html地圖這個想法。

原理:

需要三個文件:

  • sitemap.html (這個文件為系統(tǒng)自動生成,sitemap.php的克隆版)

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

  • timeSitemap.php (為更新程序,生成html頁面??稍诒O(jiān)控寶設(shè)置監(jiān)控。)

sitemap.php為頁面文件,sitemap.html為sitemap.php的克隆版,監(jiān)控寶設(shè)置定時監(jiān)控timeSitemap.php文件,實現(xiàn)每15分鐘生成網(wǎng)站地圖,當然,頻率是按照監(jiān)控寶的監(jiān)控頻率來決定,如果地圖生成失敗,會返回404,監(jiān)控寶會報警。sitemap.xml同理

下面共享代碼(用使用的mysql查詢等類為自己簡單封裝的數(shù)據(jù)庫類,這里就不展示了):

sitemap.php

<?php
/*
@   sitemap html版地圖
*/
// 引入數(shù)據(jù)庫操作類
require_once 'c/class.class.php';
// 引入系統(tǒng)參數(shù)
$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>網(wǎng)站地圖 - <?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
// <!-- 取出所有短網(wǎng)址 -->
$cons = new con();
$consSql = "select * from urls order by id desc";
$consQuery = $cons->query($consSql);
// >> 總數(shù)量
$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; ?>條數(shù)據(jù)</div><div style='text-align:center;'>本頁面每15分鐘更新一次
</div>
</hr>
本站鏈接:<a href="http://bba.fun">bba.fun短網(wǎng)址</a><a href="http://bba.fun/page/api">api接口</a><a href="http://bba.fun/sitemap.html">網(wǎng)站地圖</a>
<br>
生成鏈接:
<br>
<?php
// >> 顯示總數(shù)量
echo "";
// >> 開始循環(huán)取出
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
/*
@   定時更新網(wǎng)站地圖
*/
// 定義獲取的url
$url = "http://bba.fun/sitemap.php";
// 定網(wǎng)站地圖名字
$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分鐘自動更新網(wǎng)站地圖(減少服務(wù)器消耗)的詳細內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI