傻瓜式的php+mysql僞靜態(真實存在的html頁面)

僞靜態你們應該知道
例如你的php頁面生成的頁面爲xxx.php?id=1
爲了seo和容易被百度等搜索引擎抓取,也爲了防止高併發的時候佔用服務器資源
咱們應該把xxx.php?id=1頁面的連接顯示爲xxx_1.html等相似格式,反正就是.html爲後綴。php

我本身沒有深刻研究這個,可是我簡單實現了這個。html

1 簡單的列表mysql

<?php
//鏈接數據庫
$con = mysql_connect("localhost","root","root");
//選擇數據庫
mysql_select_db("test", $con);
//查詢數據庫
$result = mysql_query("SELECT * FROM list");
//遍歷輸出數據庫
while($row = mysql_fetch_array($result))
  {
      $url = $row["url"];
      $id = $row["id"];
      if(empty($url)){
          echo "<a href='p.php?id=$id'/>$row[title]</a><br/>";
      }else{
          echo "<a href='http://localhost/20180417/$url'/>$row[title]</a><br/>";
      }
  }
mysql_close($con);
?>

如圖:sql

clipboard.png

此時,全部的標題超連接顯示的都是p.php?id=x
重要的是p.php頁面數據庫

p.php遍歷輸出的時候
查詢了數據庫url字段,若是爲空,那麼就開始進行file_get_contents獲取整個頁面的html代碼,而後把代碼寫入到一個名爲LKY_$id.html的html文件,其中$id是當前頁面的id,若是當前頁面id=1,那麼生成的文件名爲LKY_1.html,接着就把這個文件名更新到數據庫的url字段服務器

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
//鏈接數據庫
$con = mysql_connect("localhost","root","root");
//選擇數據庫
mysql_select_db("test", $con);
//得到id
$id =$_GET["id"];
//查詢數據庫
$result = mysql_query("SELECT * FROM list where id =".$id);
//遍歷輸出數據庫
while($row = mysql_fetch_array($result))
  {
      $url = $row["url"];
      if(empty($url)){
          $get_html = "http://localhost/20180417/get_html.php?id=$id";
          $html_utl = "LKY_$id.html";
        $con_html = file_get_contents($get_html);
        $html = fopen($html_utl, "w");
        fwrite($html, $con_html);
        fclose($html);
        echo $row["zhengwen"];
        mysql_query("UPDATE list SET url = '$html_utl' WHERE id = '$id'");
      }else{
          echo $row["zhengwen"];
      }
  }
mysql_close($con);
?>
</body>
</html>

當用戶訪問xxx.p.php?id=1的時候,就會進行查詢數據庫,若是url字段爲空,那麼就獲取整個頁面的html,這個獲取html頁面的來源又用一個get_html.php進行獲取併發

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
//鏈接數據庫
$con = mysql_connect("localhost","root","root");
//選擇數據庫
mysql_select_db("test", $con);
//得到id
$id =$_GET["id"];
//查詢數據庫
$result = mysql_query("SELECT * FROM list where id =".$id);
//遍歷輸出數據庫
while($row = mysql_fetch_array($result))
  {
      echo $row["zhengwen"];
  }
mysql_close($con);
?>
</body>
</html>

獲取到了以後生成html文件並保存在服務器咱們指定的目錄,若是訪問xxx.p.php?id=1,判斷url字段不爲空,則直接輸出該頁數據或者跳轉到LKY_1.html高併發

clipboard.png

那麼在首頁的列表中也作了相應的判斷,判斷url是否爲空,若是爲空,那麼輸出的是p.php?id=1的超連接,不然從數據庫取url字段的html文件名,則輸出LKY_1.htmlfetch

clipboard.png

要說的是,這是實實在在生成html文件的!搜索引擎

相關文章
相關標籤/搜索