一个做页面静态化的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); } } } ?>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Microsoft Word에서 페이지를 복사하고 서식을 그대로 유지하고 싶으십니까? 특정 문서 레이아웃이나 형식의 복사본을 여러 개 만들려는 경우 Word에서 페이지를 복제하면 시간을 절약하는 유용한 기술이 될 수 있으므로 이는 현명한 아이디어입니다. 이 가이드는 템플릿을 만들거나 문서의 특정 페이지를 복사하는 등 Word에서 페이지를 복사하는 단계별 프로세스를 안내합니다. 이 간단한 지침은 처음부터 시작하지 않고도 페이지를 쉽게 다시 만들 수 있도록 고안되었습니다. Microsoft Word에서 페이지를 복사하는 이유는 무엇입니까? Word에서 페이지를 복사하는 것이 매우 유용한 데에는 다음과 같은 몇 가지 이유가 있습니다. 복사하려는 특정 레이아웃이나 형식의 문서가 있는 경우. 전체 페이지를 처음부터 다시 만드는 것과는 달리

페이지 새로 고침은 일상적인 네트워크 사용에서 매우 일반적입니다. 웹 페이지를 방문할 때 웹 페이지가 로드되지 않거나 비정상적으로 표시되는 등의 문제가 발생할 수 있습니다. 이때 일반적으로 문제를 해결하기 위해 페이지를 새로 고치는 방법을 선택합니다. 페이지를 빠르게 새로 고치는 방법은 무엇입니까? 페이지 새로고침 단축키에 대해 알아보겠습니다. 페이지 새로 고침 단축키는 키보드 조작을 통해 현재 웹 페이지를 빠르게 새로 고치는 방법입니다. 운영 체제와 브라우저에 따라 페이지 새로 고침 단축키가 다를 수 있습니다. 아래에서는 공통 W를 사용합니다.

대기는 휴대폰이 빠르게 유휴 상태일 때 정보에 액세스할 수 있는 새롭고 향상된 방법을 제공하는 iOS 17 업데이트의 새로운 기능입니다. StandBy를 사용하면 편리하게 시간 확인, 예정된 이벤트 보기, 캘린더 검색, 해당 위치의 날씨 업데이트 받기 등을 할 수 있습니다. 일단 활성화되면 iPhone은 충전하는 동안 가로 모드로 설정하면 직관적으로 대기 모드로 들어갑니다. 이 기능은 침대 옆 탁자 같은 무선 충전 지점이나 일상 업무 중에 iPhone을 충전하지 않을 때 적합합니다. 이를 통해 대기 상태에 표시된 다양한 위젯을 스와이프하여 다양한 앱의 다양한 정보 세트에 액세스할 수 있습니다. 그러나 귀하는 선호 사항과 자주 필요한 정보에 따라 이러한 위젯을 수정하거나 일부를 삭제할 수도 있습니다. 그럼 자세히 살펴보겠습니다.

제목: 3초 만에 페이지 점프 구현 방법: PHP 프로그래밍 가이드 웹 개발에서 페이지 점프는 일반적으로 HTML이나 JavaScript 방식에서 페이지로 점프하기 위해 메타 태그를 사용합니다. 그러나 일부 특정 경우에는 서버 측에서 페이지 점프를 수행해야 합니다. 이 기사에서는 PHP 프로그래밍을 사용하여 3초 내에 지정된 페이지로 자동으로 이동하는 기능을 구현하는 방법을 소개하고 구체적인 코드 예제도 제공합니다. PHP를 사용하는 페이지 점프의 기본 원리는 일종의 것입니다.

iOS에서 Apple은 iPhone의 개별 홈 화면 페이지를 비활성화할 수 있도록 허용합니다. 홈 화면 페이지의 순서를 재정렬하고 페이지를 비활성화하는 대신 페이지를 직접 삭제할 수도 있습니다. 작동 방식은 다음과 같습니다. 홈 화면 페이지를 재정렬하는 방법 홈 화면에서 Space를 길게 터치하면 지터 모드로 들어갑니다. 홈 화면 페이지를 나타내는 점들로 이루어진 행을 탭합니다. 표시되는 홈 화면 그리드에서 페이지를 터치하고 드래그하여 다른 페이지를 기준으로 재정렬합니다. 다른 사람들은 드래그에 반응하여 움직입니다. 새로운 배열이 만족스러우면 화면 오른쪽 상단에 있는 "완료"를 탭한 다음 다시 "완료"를 탭하여 디더링 모드를 종료하세요. 홈 화면 페이지를 비활성화하거나 제거하는 방법 디더링 모드로 들어가려면 홈 화면에서 Space를 길게 터치하십시오. 홈 화면을 나타내려면 탭하세요.

"CSS를 올바르게 표시하기 위해 Laravel 페이지의 오류를 처리하는 방법, 구체적인 코드 예제가 필요합니다." Laravel 프레임워크를 사용하여 웹 애플리케이션을 개발할 때 페이지가 CSS 스타일을 올바르게 표시하지 못하는 문제에 직면할 때가 있습니다. 비정상적인 스타일을 렌더링하는 페이지입니다. 이 글에서는 Laravel 페이지가 CSS를 올바르게 표시하지 못하는 문제를 해결하는 몇 가지 방법을 소개하고 개발자가 이 일반적인 문제를 해결하는 데 도움이 되는 특정 코드 예제를 제공합니다. 1. 파일 경로를 확인하세요. 먼저 CSS 파일의 경로를 확인하세요.

인터넷이 발전하면서 많은 웹사이트나 애플리케이션이 점점 더 복잡해지고 있습니다. 사용자가 이를 사용할 때 종종 오류 페이지가 발생하는데, 가장 일반적인 것은 404 페이지입니다. 404 페이지는 접속 중인 페이지가 존재하지 않는다는 의미로 흔히 발생하는 오류 페이지입니다. 웹사이트나 애플리케이션의 경우 아름다운 404 페이지가 사용자 경험을 크게 향상시킬 수 있습니다. 이 기사에서는 ThinkPHP6을 사용하여 아름다운 404 페이지를 빠르게 구현하는 방법을 소개합니다. 경로 생성 먼저 경로 폴더에 오류를 생성해야 합니다.

C 언어에서 static 키워드의 역할과 사용법에 대한 심층 분석 C 언어에서 static은 함수, 변수 및 데이터 유형을 정의하는 데 사용할 수 있는 매우 중요한 키워드입니다. static 키워드를 사용하면 객체의 링크 속성, 범위, 생명주기가 변경될 수 있습니다. C 언어에서 static 키워드의 역할과 사용법을 자세히 분석해 보겠습니다. 정적 변수 및 함수: 함수 내에서 static 키워드를 사용하여 정의된 변수를 전역 수명 주기를 갖는 정적 변수라고 합니다.
