ホームページ  >  記事  >  バックエンド開発  >  PHP で静的 HTML をバッチで生成する (コマンドラインから PHP を実行)_PHP チュートリアル

PHP で静的 HTML をバッチで生成する (コマンドラインから PHP を実行)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:32:11935ブラウズ

ご存知のとおり、ほとんどの Web サイトのニュース情報や製品情報は静的なページです。これを行うことの主な利点は次のとおりです。 1. アクセスが高速化され、過剰なデータベース操作が回避されます。 2. SEO が最適化され、検索エンジンへの組み込みが容易になります。

この例は、CMS システムの静的ページ ソリューションに基づいており、静的 html をバッチ生成する機能を示します。
注: この記事のプログラムは、Windows、DOS、または Linux で PHP コマンドを実行することによってのみ実行できます。
この例には主に 4 つのファイルがあります: config.inc.php (設定ファイル)、Db.class.php (データベース PDO クラス)、Model.class.php (PDO データベース操作クラス)、index.php (実行ファイル)
config .inc.php

コードをコピーします コードは次のとおりです:

header('Content-Type: text/html;Charset=utf-8');
date_default_timezone_set('PRC');
define(' ROOT_PATH', dirname(__FILE__)); // ルートディレクトリ
define('DB_DSN', 'mysql:host=localhost;dbname=article') // MySQL の PDO dsn
define('DB_USER', ' root') ; // データベースのユーザー名
define('DB_PWD', '1715544'); // データベースのパスワード (実際の状況に応じて自分で設定してください)
function __autoload($className) {
require_once ROOT_PATH . /'.ucfirst($className) .'.class.php';
}
?>

Db.class.php

コードをコピーします コードは次のとおりです:

// データベースに接続します
class Db {
static public function getDB() {
try {
$pdo = new PDO (DB_DSN, DB_USER, DB_PWD ; Error
$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, true); // 文字列が空の場合に設定され、SQL で NULL に変換されます
$pdo->query('SET NAMES utf8'); // データベースのエンコーディングを設定します
} catch (PDOException $e) {
exit('データベース接続エラー、エラー メッセージ: '. $e->getMessage());
}
return $pdo;
}
}
?>


Model.class.php

コードをコピーします コードは次のとおりです:
//Operation SQL
class Model {
/**
* SQL の追加、削除、および変更操作、影響を受ける行の数を返します
* @param string $sql
* @return int
*/
public function aud($sql) {
try {
$ pdo = Db::getDB();
$row = $pdo->exec($sql);
} catch (PDOException $e) {
exit($e->getMessage()) ;
}
return $row;
}

/**
* すべてのデータを返し、PDOStatement オブジェクトを返します
* @param string $sql
* @return PDOStatement
*/
public function getAll($sql) {
try {
$pdo = Db::getDB();
$result = $pdo- >query($ sql);
return $result;
} catch (PDOException $e) {
exit($e->getMessage());
}
}
}
?>


index.php

コードをコピーします コードは次のとおりです:

require_once './config.inc.php';
$m = new Model();
$ids = $m->getAll("記事から ID を選択 ORDER BY ID ASC");
foreach ($ids as $rowIdArr) {
$idStr .= $rowIdArr['id'].',';
}
$idStr = rtrim($idStr, ','); // すべての記事の ID 番号Set
$idArr =explode(',', $idStr); // 配列に分割
// 次のプログラムはループして静的ページを生成します
foreach ($idArr as $articleId) {
$re = $m-> ;getAll ("SELECT id,title,date,author,source,content FROMarticle WHERE id =". $articleId); // $re は各記事のコンテンツです。注: そのタイプは次のとおりです: PDOStatement
$article = array () ; // $article は配列であり、各記事のタイトル、日付、著者、内容、ソースを保存します
foreach ($re as $r) {
$article = array(
"title"=>$r [' タイトル'],
'日付'=>$r['日付'],
'著者'=>$r['著者'],
'ソース'=>$r['ソース'] ,
'content'=>$r['content']
);
}
$articlePath = ROOT_PATH. '/article' // $articlePath は静的ページが配置されるディレクトリです
if (!is_dir($ ArticlePath)) mkdir ($articlePath, 0777); // ディレクトリが存在するかどうかを確認します。 $fileName = ROOT_PATH . // $fileName によって生成された静的ファイル名、形式: Article ID.html (主キー ID は競合できません)
$articleTemPath = ROOT_PATH . '/templates/article.html' // $articleTemPath 記事テンプレートのパス
$articleContent = file_get_contents($) ArticleTemPath); // テンプレートのコンテンツを取得します
// テンプレートに設定されている変数を置き換えます。例: テンプレート内の <{title}> をデータベースから読み取ったタイトルに置き換え、それを変数 $articleContent に割り当てます
$articleContent = getArticle(array_keys($article), $articleContent, $article);
$resource = fopen($fileName, 'w');
file_put_contents($fileName, $articleContent) // HTML ファイルを書き込みます
}
; /**

* getArticle($arr, $content, $article) テンプレートを置き換えます
* @param array $arr 置換変数配列
* @param string $content テンプレートの内容
* @param array $article 各記事のコンテンツ配列、形式: array('title'=>xx, 'date'=>xx, 'author'=>xx, 'source'=>xx, 'content'=>xx);
*/
function getArticle($arr, $content, $article) {
// ループ置換
foreach ($arr as $item) {
$content = str_replace('<{'. $item .'}>', $article[$item], $content);
}
return $content;
}
?>

実行中のスクリーンショット (例として Windows DOS)


実行後のスクリーンショット: PHP で静的 HTML をバッチで生成する (コマンドラインから PHP を実行)_PHP チュートリアル


PHP で静的 HTML をバッチで生成する (コマンドラインから PHP を実行)_PHP チュートリアル 約 2 分間の実行で 9,000 を超える HTML を生成できます。

Leeさんのコラム 転載の際は出典を明記してください! ! !

http://www.bkjia.com/PHPjc/756572.html

tru​​ehttp://www.bkjia.com/PHPjc/756572.html技術記事ご存知のとおり、ほとんどの Web サイト上のニュース情報や製品情報のほとんどは静的なページです。これを行う主な利点は次のとおりです。 1. アクセスを高速化し、過剰なデータベース操作を回避します。 2. S...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。