一个做页面静态化的php类_PHP教程
一个做页面静态化的php类
<?php namespace Common; /* * * 功能:页面静态化的创建和删除 * 创建:当且仅当,一个页面需要被静态化并且还未静态化时。 * 删除:当且仅当,一个页面存在静态化页面并且需要被重新静态化时。 * * 作者:郭军周 * * 注 :本类基于ThinkPHP3.2,或者其他具有“单一入口且MVC模式”的其他php框架。 * * 使用方式:在Controller的构造方法中获取其对象;在Controller的销毁方法里,用其对象的_static方法。 * 例:XXXController extends BaseController. * BaseController: * function __construct(){ * $this->__sh = StaticHtml::getInstance(); * } * function __destruct(){ * $this->__sh->_static(); * } * * */ class StaticHtml{ private static $_instance = null; /* 单例模式,自身的引用 */ private $_needStatic = false; /* 是否需要将其静态化 */ private $_needDeleteStatic = false; /* 是否需要删除其静态化的页面 */ private $_hasStaticed = true; /* 是否存在其的静态化页面 */ private $_controller = null; /* 当前被访问的controller */ private $_action = null; /* 当前被访问的action */ // private $_staticAgain = false; /* 删除静态文件后,是否马上重新更新【【注意】再次请求】 */ private $_save_path = null; /* 将要创建或者删除的静态文件的路径 */ private $_conf = array( /* 此文件定义一些静态文件的存放方式 */ 'files_per_directory' => 100 /* 此值不允许被修改,除非是要删除所有已经存在的静态文件,重新缓存 */ ); private $_staticList = array( /* 此数组,定义了需要创建静态化页面的Controller的action */ // 'Base' => array( /* Base为controller name */ // 'aaa' => array( /* aaa为action name */ // 'save_path' => '/StaticHtml/Base/aaa/', /* save_path为生成的静态文件存放的根路径 */ // 'static_base' => 'id', /* static_base为生成静态文件的“依据”。建议为对应数据库的primary_key */ // 'alias' => 'aaa' /* 静态文件的名字,否则为1.html */ // ) // ) 'Mynotes' => array( 'look_notes' => array( 'save_path' => '/StaticHtml/Mynotes/look_notes/', 'static_base' => 'id', 'alias' => 'note' ), 'add_personal_notes' => array( 'save_path' => '/StaticHtml/Mynotes/', 'alias' => 'note-add' ) ), 'Resource' => array( 'allResource' => array( 'save_path' => '/StaticHtml/Resource/', 'alias' => 'allResource' ), 'resource_add' => array( 'save_path' => '/StaticHtml/Resource/', 'alias' => 'resourceAdd' ) ), 'Thing' => array( 'suggestion_of_lecture' => array( 'save_path' => '/StaticHtml/Lecture/', 'alias' => 'voteLecture' ) ), 'Passwordfix' => array( 'index' => array( 'save_path' => '/StaticHtml/Information/', 'alias' => 'updatePassword' ) ), 'Information' => array( 'index' => array( 'save_path' => '/StaticHtml/Information/', 'static_base' => 'user_id', 'alias' => 'information' ) ), 'Courseinfo' => array( 'course_show' => array( 'save_path' => '/StaticHtml/Information/', 'static_base' => 'user_id', 'alias' => 'course' ) ) ); private $_deleteList = array( /* 此数组,定义了需要删除某些静态化页面的Controller的action */ // 'Base' => array( /* Base为controller name */ // 'bbb' => array( /* bbb为action name */ // 'save_path' => '/StaticHtml/Base/aaa/', /* save_path为要删除的静态文件存放的根路径 */ // 'static_base' => 'id', /* static_base为确定静态文件路径的“依据”。建议为对应数据库的primary_key */ // 'alias' => 'aaa' /* 静态文件的名字,否则为1.html */ // ) // ) 'Mynotes' => array( 'edits_notes' => array( 'save_path' => '/StaticHtml/Mynotes/look_notes/', 'static_base' => 'id', 'alias' => 'note' ) ), 'Information' => array( 'save_user_info' => array( 'save_path' => '/StaticHtml/Information/', 'static_base' => 'user_id', 'alias' => 'information' ) ), 'Courseinfo' => array( 'course_update' => array( 'save_path' => '/StaticHtml/Information/', 'static_base' => 'user_id', 'alias' => 'course' ) ) ); private function __construct(){ $this->needStatic(); /* 确定本次请求是否需要静态化 */ $this->hasStaticed(); /* 确定本次请求是否已经存在静态化页面 */ $this->needDeleteStatic(); /* 确定本次请求是否需要删除某些静态页面 */ } /* 确定需要删除的静态文件的存放路径 */ private function needDeleteStatic(){ if($this->_needDeleteStatic){ $save_path = $this->getSavePath($this->_deleteList[$this->_controller][$this->_action]); $this->_hasStaticed = false; if(file_exists(ROOT_PATH.$save_path)){ $this->_hasStaticed = true; } // $this->_staticAgain = $this->_deleteList[$this->_controller][$this->_action]['visitAgain']; $this->_save_path = ROOT_PATH.$save_path; } } /* 获取本类的,唯一的,实例化 */ public static function getInstance(){ if(!(self::$_instance instanceof self)){ self::$_instance = new self(); } return self::$_instance; } /* 判断是否存在其静态化的文件 */ private function hasStaticed(){ if($this->_needStatic){ $save_path = $this->getSavePath($this->_staticList[$this->_controller][$this->_action]); if(!file_exists(ROOT_PATH.$save_path)){ $this->_hasStaticed = false; ob_start(); }else{ header("location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']).$save_path); } $this->_save_path = ROOT_PATH.$save_path; } } /* 获取本次请求要生成或者删除的,静态化文件的路径 */ private function getSavePath($conf){ if(!isset($conf['static_base'])){ $save_path = $conf['save_path']; $save_path .= $conf['alias'].'.html'; }else{ if($conf['static_base'] == 'user_id'){ $id = (int)$_SESSION['logined_user']['id']; }else{ if(IS_GET){ $id = $_GET[$conf['static_base']]; }else{ $id = $_POST[$conf['static_base']]; } } $save_path = $conf['save_path']; $directory_id = ceil($id/$this->_conf['files_per_directory']); $save_path .= $directory_id.'/'; if($conf['alias']){ $fileName = $conf['alias'].'-'; } $fileName .= $id.'.html'; $save_path .= $fileName; } return $save_path; } /* 确定本次请求,是否需要生成静态化文件 */ private function needStatic(){ $url = explode('/',__ACTION__); $this->_controller = $url[4]; $this->_action = $url[5]; if(isset($this->_staticList[$this->_controller]) && isset($this->_staticList[$this->_controller][$this->_action])){ $this->_needStatic = true; } if(isset($this->_deleteList[$this->_controller]) && isset($this->_deleteList[$this->_controller][$this->_action])){ $this->_needDeleteStatic = true; } } /* 生成,或者删除,静态化文件 */ public function _static(){ if($this->_needStatic && !$this->_hasStaticed){ $html = ob_get_contents(); $this->_mkdir(dirname($this->_save_path)); file_put_contents($this->_save_path,$html); } if($this->_needDeleteStatic && $this->_hasStaticed){ unlink($this->_save_path); /*if($this->_staticAgain){ header("location: http://www.baidu.com"); // header("location: http://".$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']); }*/ } } /* 创建目录 */ private function _mkdir($path){ if (!file_exists($path)){ $this->_mkdir(dirname($path)); mkdir($path, 0777); } } } ?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ingin menyalin halaman dalam Microsoft Word dan mengekalkan pemformatan? Ini adalah idea yang bijak kerana menduplikasi halaman dalam Word boleh menjadi teknik penjimatan masa yang berguna apabila anda ingin membuat berbilang salinan susun atur atau format dokumen tertentu. Panduan ini akan membimbing anda melalui proses langkah demi langkah menyalin halaman dalam Word, sama ada membuat templat atau menyalin halaman tertentu dalam dokumen. Arahan mudah ini direka untuk membantu anda mencipta semula halaman anda dengan mudah tanpa perlu bermula dari awal. Mengapa menyalin halaman dalam Microsoft Word? Terdapat beberapa sebab mengapa menyalin halaman dalam Word sangat bermanfaat: Apabila anda mempunyai dokumen dengan susun atur atau format tertentu yang anda ingin salin. Tidak seperti mencipta semula keseluruhan halaman dari awal

Siap sedia ialah ciri baharu dalam kemas kini iOS 17 yang menyediakan cara baharu dan dipertingkat untuk mengakses maklumat apabila telefon anda melahu dengan cepat. Dengan StandBy, anda boleh menyemak masa dengan mudah, melihat acara akan datang, menyemak imbas kalendar anda, mendapatkan kemas kini cuaca untuk lokasi anda dan banyak lagi. Setelah diaktifkan, iPhone secara intuitif akan memasuki mod siap sedia apabila ditetapkan kepada landskap semasa mengecas. Ciri ini sesuai untuk titik pengecasan wayarles seperti meja malam anda, atau apabila anda berada jauh dari pengecasan iPhone anda semasa tugasan harian. Ia membolehkan anda meleret melalui pelbagai widget yang dipaparkan dalam bersedia untuk mengakses set maklumat yang berbeza daripada pelbagai aplikasi. Walau bagaimanapun, anda mungkin ingin mengubah suai widget ini atau memadam beberapa berdasarkan keutamaan anda dan maklumat yang anda perlukan dengan kerap. Jadi mari kita selami

Penyegaran halaman adalah perkara biasa dalam penggunaan rangkaian harian kami Apabila kami melawat halaman web, kadangkala kami menghadapi beberapa masalah, seperti halaman web tidak dimuatkan atau dipaparkan secara tidak normal, dsb. Pada masa ini, kami biasanya memilih untuk memuat semula halaman untuk menyelesaikan masalah, jadi bagaimana untuk memuat semula halaman dengan cepat? Mari kita bincangkan kekunci pintasan untuk muat semula halaman. Kekunci pintasan muat semula halaman ialah kaedah untuk memuat semula halaman web semasa dengan pantas melalui operasi papan kekunci. Dalam sistem pengendalian dan penyemak imbas yang berbeza, kekunci pintasan untuk muat semula halaman mungkin berbeza. Di bawah ini kami menggunakan W biasa

Dalam iOS, Apple membenarkan anda melumpuhkan halaman skrin utama individu pada iPhone anda. Anda juga boleh menyusun semula susunan halaman skrin utama dan memadamkan halaman secara langsung dan bukannya melumpuhkannya sahaja. Begini cara ia berfungsi. Cara Menyusun Semula Halaman Skrin Utama Sentuh dan tahan Ruang pada skrin Utama untuk memasuki mod jitter. Ketik baris titik yang mewakili halaman skrin Utama. Dalam grid Skrin Utama yang muncul, sentuh dan seret halaman untuk menyusunnya semula berbanding dengan halaman lain. Orang lain bergerak sebagai tindak balas kepada penyeretan anda. Apabila anda berpuas hati dengan susunan baharu anda, ketik "Selesai" di penjuru kanan sebelah atas skrin, kemudian ketik "Selesai" sekali lagi untuk keluar dari mod dither. Cara Melumpuhkan atau Mengalih Keluar Halaman Skrin Utama Sentuh dan tahan Ruang pada skrin Utama untuk memasuki mod dither. Ketik untuk mewakili skrin utama

Tajuk: Kaedah pelaksanaan lompat halaman dalam 3 saat: Panduan Pengaturcaraan PHP Dalam pembangunan web, lompat halaman adalah operasi biasa Secara umumnya, kami menggunakan tag meta dalam kaedah HTML atau JavaScript untuk melompat ke halaman. Walau bagaimanapun, dalam beberapa kes tertentu, kita perlu melakukan lompatan halaman pada bahagian pelayan. Artikel ini akan memperkenalkan cara menggunakan pengaturcaraan PHP untuk melaksanakan fungsi yang secara automatik melompat ke halaman tertentu dalam masa 3 saat, dan juga akan memberikan contoh kod tertentu. Prinsip asas lompat halaman menggunakan PHP adalah sejenis

"Bagaimana untuk menangani kegagalan halaman Laravel untuk memaparkan CSS dengan betul, contoh kod khusus diperlukan" Apabila menggunakan rangka kerja Laravel untuk membangunkan aplikasi web, kadangkala anda akan menghadapi masalah bahawa halaman tidak dapat memaparkan gaya CSS dengan betul, yang boleh menyebabkan halaman untuk menghasilkan gaya yang tidak normal. Artikel ini akan memperkenalkan beberapa kaedah untuk menangani kegagalan halaman Laravel untuk memaparkan CSS dengan betul, dan menyediakan contoh kod khusus untuk membantu pembangun menyelesaikan masalah biasa ini. 1. Semak laluan fail Mula-mula semak laluan fail CSS.

Analisis mendalam tentang peranan dan penggunaan kata kunci statik dalam bahasa C Dalam bahasa C, statik ialah kata kunci yang sangat penting, yang boleh digunakan dalam definisi fungsi, pembolehubah dan jenis data. Menggunakan kata kunci statik boleh menukar atribut pautan, skop dan kitaran hayat objek Mari analisa peranan dan penggunaan kata kunci statik dalam bahasa C secara terperinci. Pembolehubah statik dan fungsi: Pembolehubah yang ditakrifkan menggunakan kata kunci statik di dalam fungsi dipanggil pembolehubah statik, yang mempunyai kitaran hayat global

Apabila Internet berkembang, banyak laman web atau aplikasi secara beransur-ansur menjadi lebih kompleks. Apabila pengguna menggunakannya, mereka sering menghadapi halaman ralat, yang paling biasa ialah halaman 404. Halaman 404 bermakna halaman yang diakses tidak wujud dan merupakan halaman ralat biasa. Untuk tapak web atau aplikasi, halaman 404 yang cantik boleh meningkatkan pengalaman pengguna dengan ketara. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ThinkPHP6 untuk melaksanakan halaman 404 yang cantik dengan cepat. Cipta laluan Pertama, kita perlu mencipta ralat dalam folder laluan
