PHP 단일 모드 데이터베이스 연결 클래스 와 페이지 정적 화 실현 방법
데이터베이스 test 에서 데이터 시트 account 내용
단일 모드 의 데이터베이스 연결 클래스
db.php
<?php
//
class DB {
//
static public $_instance;
//
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() {
//
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 가 페이지 정적 화 를 실현 하 는 예사실 원 리 는 간단 합 니 다.여기 서 몇 가지 함 수 를 사 용 했 습 니 다.
ob_start()
,ob_get_contents()
,file_put_contents()
는 버퍼 를 열 었 다 는 뜻 입 니 다.ob_start()
는 버퍼 내용 을 얻 었 다 는 뜻 입 니 다.ob_get_contents()
내용 을 한 파일 에 넣 었 다 는 뜻 입 니 다.버퍼 의 뜻 을 이해 하지 못 하면 스스로 바 이 두 할 수 있 습 니 다.제 가 이해 하 는 버퍼 는 바로...PHP 에서 데 이 터 를 출력 하려 면 버퍼 를 거 쳐 야 합 니 다.버퍼 에서 이 내용 을 얻 을 수 있 습 니 다.따라서 정적 페이지 를 실현 하 는 방법 은 버퍼 의 내용 을 정적 파일 에 가 져 오고 입구 에서 필요 에 따라 동적 파일 에 접근 하 는 지 정적 파일 에 접근 하 는 지 설정 하 는 것 입 니 다.이런 방법 은 데이터 가 자주 변 하지 않 는 동적 페이지 에 사 용 됩 니 다.다음은 이 기능 을 구체 적 으로 실현 하 겠 습 니 다.static.php
<?php
//1.
//2.
//3.
// 5 ,filemtime()
if(is_file('./static.shtml') && (time() - filemtime('./static.shtml')) < 300) {
// ,
require_once('./static.shtml');
}else {
// , 5 , , static.shtml
//
header('Content-Type:text/html;charset=utf-8');
require_once('./db.php');
$connect = DB::getInstance()->connect();
//
$sql = 'select * from account';
$res = $connect->query($sql);
//
ob_start();
//ob_get_clean() , ob_get_clean() ob_get_contents()
require_once('./static_show.php');
//
file_put_contents('./static.shtml', ob_get_contents());
}
?>
동적 디 스 플레이 템 플 릿 파일 staticshow.php
<?php
foreach($res as $row) {
echo ' :'.$row['name'].'<br/>';
echo ' :'.$row['money'].'<br/>';
echo '<hr/>';
}
?>
static.php 를 방문 할 때 static.shtml 이 없 기 때문에 else 작업 을 먼저 수행 하여 static 에 보 여 줍 니 다.show.php 및 static.shtml 파일 생 성만약 에 이때 제 가 데이터 베 이 스 를 수정 하면 zjp 의 money 를 800 으로 바 꾼 다음 에 static.php 를 방문 하면 어떤 내용 을 보 여 드릴 까요?맞습니다.zjp 의 지갑 은 600 입 니까?왜 일 까요?if 의 내용 을 실 행 했 기 때문에 static.shtml 을 직접 보 여 주 었 습 니 다.우 리 는 static.shtml 이 어떤 것 인지 볼 수 있 습 니 다.
5 분 후에 staitc.phop 을 방문 하면 무엇 을 표시 할 까요?맞습니다!zjp 의 지갑 은 800 이 되 고 static.shtml 의 내용 은 zjp 의 지갑 은 800 으로 업 데 이 트 됩 니 다.
테스트 obget_clean()과 obget_contents()
테스트 방법 은 매우 간단 하 다.
<?php
$test = 'Hello World!';
//
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();
// :
?>
이렇게 하면 우리 가file_put_contents()
를 사 용 했 을 때 출력 문 구 는 어떠한 값 도 출력 하지 않 습 니 다.ob_get_clean()
버퍼 의 내용 을 가 져 오고 버퍼 를 비 울 수 있 기 때 문 입 니 다.그래서 우리ob_get_clean()
때 test 를 받 지 못 했 을 때 test 의 값 을 받 지 못 했 고echo test
때 값 을 얻 을 수 있 었 다.우리 가echo ob_get_clean()
을 사 용 했 을 때 버퍼 의 내용 은 비어 있 지 않 았 다.실제로
ob_get_contents()
함 수 는 실 행 된 셈 이다.ob_get_clean()
과ob_get_contents()
.더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.