好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP單例模式數據庫連接類與頁面靜態(tài)化實現方法

PHP單例模式數據庫連接類與頁面靜態(tài)化實現方法

熱門標簽:九江外呼系統(tǒng) 抖音有個地圖標注是什么意思 七魚外呼系統(tǒng)停用嗎 西區(qū)企業(yè)怎么做地圖標注入駐 阿里云400電話申請加工單 地下城堡2圖九地圖標注 保定crm外呼系統(tǒng)運營商 智能電話機器人排名前十名南京 海南人工外呼系統(tǒng)有效果嗎

本文實例講述了PHP單例模式數據庫連接類與頁面靜態(tài)化實現方法。分享給大家供大家參考,具體如下:

數據庫test中數據表account內容

單例模式的數據庫連接類

db.php

?php
//單例模式的數據庫連接
class DB {
  //存儲實例的靜態(tài)成員變量
  static public $_instance;
  //數據庫連接靜態(tài)變量
  static public $_connectSource;
  //連接數據庫配置,由于前幾天學習了PDO,這里就使用PDO
  private $_dbConfig = array(
    'host' => 'localhost',
    'user' = > 'root',
    'password' => '',
    'database' => 'test'
  );
  //禁止外部實例化
  private function __construct() {
  }
  //實例化
  public static function getInstance() {
    if(self::$_instance instanceof self) {
      return self::$_instance;
    }
    self::$_instance = new self();
    return self::$_instance;
  }
  //數據庫連接
  public function connect() {
    //如果不存在數據庫連接就創(chuàng)建一個
    if(!self::$_connectSource) {
      try {
        $dsn = 'mysql:host='.$this->_dbConfig['host'].';dbname='.$this->_dbConfig['database'];
        $username = $this->_dbConfig['user'];
        $password = $this->_dbConfig['password'];
        self::$_connectSource = new PDO($dsn, $username, $password);
      }catch(PDOException $e) {
        echo $e->getMessage();
      }
    }
    return self::$_connectSource;
  }
}
?>

PHP實現頁面靜態(tài)化的例子

其實原理很簡單,這里用到了幾個函數,ob_start()ob_get_contents()file_put_contents()ob_start()是開啟緩沖區(qū)的意思,ob_get_contents()是得到緩沖區(qū)內容的意思,file_put_contents()是把內容放到一個文件里的意思,如果不理解緩沖區(qū)的意思,可以自行百度一下,我理解的緩沖區(qū)就是,當我們要在PHP中輸出一些數據顯示出來時,會先經過緩沖區(qū),而我們可以從緩沖區(qū)中得到這些內容。所以實現純靜態(tài)頁面的方法就是,獲取緩沖區(qū)中的內容放到一個靜態(tài)文件中,并在入口中根據需求設置訪問動態(tài)文件還是靜態(tài)文件,這種方法一般用于數據不經常變化的動態(tài)頁面中。下面就來具體的實現這個功能。

static.php

?php
//1.使用剛才寫的數據庫連接類連接數據庫
//2.把獲取到的數據填充到模板文件中
//3.把頁面轉化為靜態(tài)文件
//如果我們本地有這個靜態(tài)文件并且這個文件生成的時間小于5分鐘那么就去訪問這個靜態(tài)文件,filemtime()用來獲取文件的最后修改時間
if(is_file('./static.shtml')  (time() - filemtime('./static.shtml'))  300) {
  //這里很簡單,直接把靜態(tài)文件拿過來
  require_once('./static.shtml');
}else {
//如果不存在這個靜態(tài)文件,或者這個靜態(tài)文件的最后修改時間距離現在已經超過了5分鐘,那么就訪問動態(tài)獲取數據的模板,然后更新static.shtml文件的內容
  //連接數據庫
  header('Content-Type:text/html;charset=utf-8');
  require_once('./db.php');
  $connect = DB::getInstance()->connect();
  //執(zhí)行查詢操作
  $sql = 'select * from account';
  $res = $connect->query($sql);
  //開啟緩沖區(qū)
  ob_start();
  //ob_get_clean()這個函數可以獲取緩沖區(qū)的內容并清空,一會我會測試一下ob_get_clean()和ob_get_contents()的
  require_once('./static_show.php');
  //把緩沖區(qū)的內容寫入到靜態(tài)文件
  file_put_contents('./static.shtml', ob_get_contents());
}
?>

動態(tài)展示模板文件static_show.php

?php
  foreach($res as $row) {
    echo '名字:'.$row['name'].'br/>';
    echo '錢包:'.$row['money'].'br/>';
    echo 'hr/>';
  }
?>

當我們訪問static.php的時候,因為沒有static.shtml,所以會先執(zhí)行else的操作,展示在static_show.php并生成static.shtml文件

如果這時候我把數據庫修改了,zjp的money改為800,然后再訪問static.php會展示什么樣的內容呢,沒錯,zjp的錢包還是600,為什么呢,因為它執(zhí)行了if中的內容,直接顯示了static.shtml,我們可以看一下static.shtml是什么樣的:

如果5分鐘過后再訪問staitc.php呢,會顯示什么呢,沒錯!zjp的錢包就變成800了,并且static.shtml的內容會更新為zjp的錢包是800。

測試ob_get_clean()和ob_get_contents()

測試方法很簡單:

?php
$test = 'Hello World!';
//開啟緩沖區(qū)
ob_start();
//測試ob_get_contents()
echo $test;
echo ob_get_contents();
//輸出結果:Hello World!Hello World!
//測試ob_get_clean()
echo $test;
echo ob_get_clean();
//輸出結果:Hello World!
echo $test;
ob_get_clean();
//輸出結果:
?>

這樣就可以很清楚的看出來了,當我們使用了ob_get_clean()的時候,輸出語句并不會輸出任何值,因為ob_get_clean()會獲取緩沖區(qū)中的內容并將緩沖區(qū)清空。所以當我們echo test的時候并沒有得到test的時候并沒有得到test的值,echo ob_get_clean()的時候卻能夠獲取到值。而當我們使用ob_get_contents()的時候緩沖區(qū)中的內容并沒有被清空。

實際上,ob_get_clean()函數相當于執(zhí)行了,ob_get_contents()ob_end_clean()

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP實現HTML頁面靜態(tài)化的方法
  • PHP實現頁面靜態(tài)化的超簡單方法
  • ThinkPHP 3.2.3實現頁面靜態(tài)化功能的方法詳解
  • 使用ob系列函數實現PHP網站頁面靜態(tài)化
  • PHP 實現頁面靜態(tài)化的幾種方法
  • 詳解php實現頁面靜態(tài)化原理
  • 實例講解PHP頁面靜態(tài)化
  • 利用php的ob緩存機制實現頁面靜態(tài)化方法
  • php實現頁面純靜態(tài)的實例代碼
  • PHP將整個網站生成HTML純靜態(tài)網頁的方法總結
  • 基于php偽靜態(tài)的實現詳細介紹
  • PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法詳解

標簽:遼陽 甘肅 梅河口 昭通 涼山 韶關 十堰 九江

巨人網絡通訊聲明:本文標題《PHP單例模式數據庫連接類與頁面靜態(tài)化實現方法》,本文關鍵詞  PHP,單例,模式,數據庫,連接,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP單例模式數據庫連接類與頁面靜態(tài)化實現方法》相關的同類信息!
  • 本頁收集關于PHP單例模式數據庫連接類與頁面靜態(tài)化實現方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美黑人巨大xxxxx视频| 军人开荤后H拔不出来| 真实乱小说目录全文伦小说| 乖 把生殖腔打开H| 国产精品人妻无码免费久久久 | 美国情欲满载凯登克劳丝在线| 日韩美女脱内衣玩奶| 黄色小说免费在线观看| 爷俩共用一个女人的小说| 老师吸大胸校花的奶水漫画| 我们都是坏孩子高清在线播放 | 性一摸一边抽搐一进一出| 激情爱爱动图| 久久婷婷五月国产色综合激情| 男女无遮的毛片观看| 国产成人一区二区三区传媒| 拔丝袜| www呦女| 欧美毛片久久888免费AV| 國產亂倫親子亂伦小说在线阅读| 日本欧美中文字幕人在线| 在线观看??禁无码精品| 江油市| 篮球队生被C到合不拢腿H视频 | 久久久久精品理论片| 国产精品久久久久精| 日韩欧美一卡二区| 成人版巜古墓丽影R版| 狠狠精品干练AV视频| 性欧美丨18一19| 国产精品无码久久久久A片苍井| 果冻传媒国产李琼| 就爱啪啪手机版免费| 欧美日本色| 亚洲AV永久无码精品天堂d2| 国产老女人| 亚洲女精品一区二区三区| 少妇高潮尖叫声久久A片| 国产成都一二三四区| 一本加勒比HEZYO东京热高清| 同桌脱我内衣裤揉我胸动态图 |