<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當(dāng)前位置:首頁>軟件介紹>談PHP生成靜態(tài)頁面 查詢:
               
          談PHP生成靜態(tài)頁面

                  一、引 言

                  在速度上,靜態(tài)頁面要比動態(tài)頁面的比方php快很多,這是毫無疑問的,但是由于靜態(tài)頁面的靈活性較差,如果不借助數(shù)據(jù)庫或其他的設(shè)備保存相關(guān)信息的話,整體的管理上比較繁瑣,比方修改編輯.比方閱讀權(quán)限限制等,但是,對應(yīng)一些我們經(jīng)常頻頻使用的文件,比方說,開發(fā)的新聞發(fā)布系統(tǒng),我們不希望很多用戶都讀取數(shù)據(jù)庫才顯示結(jié)果,這樣一方面消耗了服務(wù)器的資源,另一方面占去了瀏覽者大量可貴的響應(yīng)時間,所有,有了"靜態(tài)頁面話"的做法,當(dāng)前很多網(wǎng)站都采用這種技術(shù),一般都是由管理后臺控制,或者生成html直接顯示,或者xhtml用css控制顯示,或者生成xml用xslt顯示,這些技術(shù)都不是難的,在這里我就淺顯的說說生成html的方法.

                  二、預(yù)備知識

                  模板技術(shù):

                  [PHP] 模板引擎Smarty深入淺出介紹 --2005-12-31

                  [PHP] 笑談配置,使用Smarty技術(shù) --2006-01-04

                  緩存技術(shù):

                  有些信息比方經(jīng)常不變的,但是還是能變的信息放在緩存中以加快顯示速度,這是很有價值的,所謂的緩存,通俗的理解就是一些保存在服務(wù)器端的共用信息.它是于服務(wù)器同生死的,我們在保存緩存的時候可以指定下次更新的時間的判斷,比方要在5分鐘更新一次,可以記錄上次更新的時間,和當(dāng)前時間比較,如果大于 5 分鐘 ,讀取數(shù)據(jù)庫,更新?lián)Q成,否則直接讀取緩存數(shù)據(jù),當(dāng)然,緩存需要客戶端用戶激活的,只需一次.

                  ob_start()函數(shù):打開輸出緩沖區(qū).

                  函數(shù)格式 void ob_start(void)

                  說明:當(dāng)緩沖區(qū)激活時,所有來自PHP程序的非文件頭信息均不會發(fā)送,而是保存在內(nèi)

                  部緩沖區(qū)。為了輸出緩沖區(qū)的內(nèi)容,可以使用ob_end_flush()或flush()輸出緩沖區(qū)的內(nèi)容。

                  Flush:刷新緩沖區(qū)的內(nèi)容,輸出。

                  函數(shù)格式:flush()

                  說明:這個函數(shù)經(jīng)常使用,效率很高。

                  ob_get_contents :返回內(nèi)部緩沖區(qū)的內(nèi)容。

                  函數(shù)格式:string ob_get_contents(void)

                  說明:這個函數(shù)會返回當(dāng)前緩沖區(qū)中的內(nèi)容,如果輸出緩沖區(qū)沒有激活,則返回 FALSE.

                  ob_get_length:返回內(nèi)部緩沖區(qū)的長度。

                  函數(shù)格式:int ob_get_length(void)

                  說明:這個函數(shù)會返回當(dāng)前緩沖區(qū)中的長度;和ob_get_contents一樣,如果輸出緩沖區(qū)沒有激活,則返回 FALSE.

                  ob_end_clean:刪除內(nèi)部緩沖區(qū)的內(nèi)容,并且關(guān)閉內(nèi)部緩沖區(qū)

                  函數(shù)格式:void ob_end_clean(void)

                  說明:這個函數(shù)不會輸出內(nèi)部緩沖區(qū)的內(nèi)容而是把它刪除

                  ob_end_flush:發(fā)送內(nèi)部緩沖區(qū)的內(nèi)容到瀏覽器,并且關(guān)閉輸出緩沖區(qū)

                  函數(shù)格式:void ob_end_flush(void)

                  說明:這個函數(shù)發(fā)送輸出緩沖區(qū)的內(nèi)容(如果有的話)

                  ob_implicit_flush:打開或關(guān)閉絕對刷新

                  函數(shù)格式:void ob_implicit_flush ([int flag])

                  說明:默認(rèn)為關(guān)閉緩沖區(qū),打開絕對輸出后,每個腳本輸出都直接發(fā)送到瀏覽器,不再

                  需要調(diào)用 flush()

                  文件寫入:

                  int fwrite ( resource handle, string string [, int length] )

                  fwrite() 把 string 的內(nèi)容寫入 文件指針 handle 處。 如果指定了 length,當(dāng)寫入了

                  length 個字節(jié)或者寫完了 string 以后,寫入就會停止,視乎先碰到哪種情況。

                  fwrite() 返回寫入的字符數(shù),出現(xiàn)錯誤時則返回 FALSE 。

                  相關(guān)參考官方網(wǎng)站: 文件參考

                  三、解決方案

                  思路:開啟 ob_start緩沖,當(dāng)已經(jīng)調(diào)出數(shù)據(jù)的時候獲取 ob_get_contents,然后生成靜態(tài)頁,ob_end_clean清除緩沖.ok,就這么來,來看一個例子(php+mysql的結(jié)合):

                  創(chuàng)建數(shù)據(jù)庫:

                  CREATE TABLE `bihtml` (

                  `id` int(11) NOT NULL auto_increment,

                  `szdtitle` varchar(16) NOT NULL,

                  `szdcontent` text NOT NULL,

                  PRIMARY KEY (`id`)

                  ) TYPE=MyISAM;

                  獲取當(dāng)前的ID,并導(dǎo)入模板:

                  四、說明事項

                  1: 一般建議管理員添加數(shù)據(jù)的時候就生成靜態(tài)頁面,可以考慮記錄生成的文件名次和路徑.

                  2: php主要是 ob_starts()和 ob_get_contents,生成靜態(tài)頁面的時候很有用,當(dāng)然也可

                  以考慮調(diào)出數(shù)據(jù)庫直接替換模板里面的變量也是可以的.

                  3: 主要的模板使用smarty,phplib都是可以的,smarty使用比較簡易.

                  ob_start();

                  $id=_POST['id']

                  if(!isset($id)&&is_integer($id))

                  {

                  @$db=new mysqli('localhost','root','admin','bihtml');

                  $result=$db->fetch_one_array("select * from szd_bi where id='$id'");

                  if(!empty($result))

                  {

                  $tmp->assign(array(

                  "Szdtitle",htmlspecialchars($result['titles']),

                  "Szdcontent",$result['titles']));

                  }

                  $tpl->display('default_1.tpl');

                  $this_my_f= ob_get_contents(); //此處關(guān)鍵

                  ob_end_clean();

                  $filename = "$id.html";

                  if(tohtmlfile_cjjer($filename,$this_my_f))

                  echo "生成成功 $filename";

                  else

                  echo "生成識別";

                  }

                  }

                  //把生成文件的過程寫出函數(shù)

                  function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)

                  {

                  if (is_file ($file_cjjer_name)){

                  @unlink ($file_cjjer_name);

                  }

                  $cjjer_handle = fopen ($file_cjjer_name,"w");

                  if (!is_writable ($file_cjjer_name)){

                  return false;

                  }

                  if (!fwrite ($cjjer_handle,$file_cjjer_content)){

                  return false;

                  }

                  fclose ($cjjer_handle); //關(guān)閉指針

                  return $file_cjjer_name;

                  


          PHP程序員如何不斷學(xué)習(xí)?PHP二進(jìn)制加密與解密的解決辦法
          PHP語法入門PHP平臺的缺陷
          如何成為PHP高手PHP入門學(xué)習(xí)基礎(chǔ)教程
          php主動加載PHP提高編程效率的方法
          php基礎(chǔ)知識點總結(jié)PHP從零入門教程
          PHP內(nèi)核解密學(xué)習(xí)PHP的方法與技巧
          PHP7性能翻倍關(guān)鍵大揭秘如何遏制PHP木馬攻擊
          PHP編程教程Ajax完成分頁技巧MySQL讀寫分離由PHP實現(xiàn)
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 国产三区在线观看 | 中日韩黄色视频 | 中文字幕第45页 | 淫色综合网 | 亚洲精品国产AV婷婷 | 欧美黑人一级视频 | 新超碰97 | 日本午夜福利片 | 91国产黄片 | 一二区免费 |