首页 后端开发 php教程 PHP中批量生成静态html(命令行下运行PHP)_PHP

PHP中批量生成静态html(命令行下运行PHP)_PHP

Jun 01, 2016 am 11:54 AM
命令行

众所周知,大部分网站的新闻资讯或商品信息都是静态页面。这样做的好处主要是为了: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 . '/includes/'. ucfirst($className) .'.class.php';
}
?>

Db.class.php

复制代码 代码如下:
// 连接数据库
class Db {
 static public function getDB() {
  try {
   $pdo = new PDO(DB_DSN, DB_USER, DB_PWD);
   $pdo->setAttribute(PDO::ATTR_PERSISTENT, true); // 设置数据库连接为持久连接
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  // 设置抛出错误
   $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

复制代码 代码如下:
// 操作 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("SELECT id FROM article ORDER BY id ASC");
foreach ($ids as $rowIdArr) {
 $idStr .= $rowIdArr['id'].',';
}
$idStr = rtrim($idStr, ','); // 所有文章的 ID 号集合
$idArr = explode(',', $idStr); // 分割成数组
// 下面的程序循环生成静态页面
foreach ($idArr as $articleId) {
 $re = $m->getAll("SELECT id,title,date,author,source,content FROM article WHERE id =". $articleId); // $re 为每篇文章的内容,注意:其类型为:PDOStatement
 $article = array(); // $article 为一个数组,保存每篇文章的title、date、author、content、source
 foreach ($re as $r) {
  $article = array(
     'title'=>$r['title'],
     'date'=>$r['date'],
     'author'=>$r['author'],
     'source'=>$r['source'],
     'content'=>$r['content']
    );
 }
 $articlePath = ROOT_PATH. '/article'; // $articlePath 为静态页面放置的目录
 if (!is_dir($articlePath)) mkdir($articlePath, 0777); // 检查目录是否存在,不存在则创建
 $fileName = ROOT_PATH . '/article/' . $articleId . '.html'; // $fileName 生成的静态文件名,格式:文章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('', $article[$item], $content);
 }
 return $content;
}
?>

 运行截图(Windows 的 DOS 为例) 
PHP中批量生成静态html(命令行下运行PHP)_PHP       
运行完毕截图: 

PHP中批量生成静态html(命令行下运行PHP)_PHP

运行2分钟左右就可以生成 9000多 html。

来自Lee.的专栏 转载注明出处!!!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
两个点博物馆:所有展览以及在哪里可以找到它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

通过命令行在 Mac 上启用低功耗模式 通过命令行在 Mac 上启用低功耗模式 Apr 14, 2023 pm 12:13 PM

对于不熟悉的人来说,低功耗模式会减少 Mac 的能源使用,可能会延长电池寿命,但会暂时牺牲性能,但它的处理得很好,对于大多数用户来说,他们不会注意到任何特别的退化。如果您是 Mac 笔记本电脑用户,并试图从 MacBook Pro 或 Air 中获得尽可能长的电池寿命,那么这是一种非常有用的模式。从命令行启用 Mac 低功耗模式从终端,在任何 Mac 笔记本电脑上键入以下命令字符串:sudo pmset -a lowpowermode 1按 sudo 的要求按回车键并输入管理员密码进行身份验证。

学习如何有效使用命令行工具sxstrace.exe 学习如何有效使用命令行工具sxstrace.exe Jan 04, 2024 pm 08:47 PM

很多使用win10系统的小伙伴在玩游戏或者装系统的时候有遇见过这个问题,应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。这可能是操作系统没有相应权限的缘故,具体的教程下面一起来看看吧。使用命令行sxstrace.exe工具的教程1、该问题通常会在安装程序、游戏的时候出错,其提示为:应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。2、开始→

Linux系统中的常用命令和快捷方式 Linux系统中的常用命令和快捷方式 Jun 18, 2023 am 08:46 AM

随着Linux操作系统的广泛应用,越来越多的人开始需要学习和了解Linux系统中的基本命令和快捷方式。在本文中,我们将介绍一些常用的Linux命令和快捷方式,帮助初学者了解Linux系统,提高工作效率。常用命令1.1ls命令ls命令是Linux中最常用的命令之一。它主要用于列出当前目录下的文件和子目录。常用的选项有:-l:以长格式显示文件信息,包括文件类型

通过命令行将Ubuntu 20.04升级到22.04 通过命令行将Ubuntu 20.04升级到22.04 Mar 20, 2024 pm 01:25 PM

本文详细介绍了将Ubuntu20.04升级到22.04的步骤。对于使用Ubuntu20.04的用户,错过了22.04版本带来的新功能和优势。为了获得更好的体验和安全性,建议及时升级到较新的Ubuntu版本。Ubuntu22.04的代号为“杰米水母”,让我们一起来探索如何获取最新的LTS版本吧!如何通过命令行将Ubuntu20.04升级到22.04掌握命令行会给你带来优势。虽然通过GUI更新Ubuntu是可能的,但我们的重点将是通过命令行。首先,让我们使用以下命令检查当前运行的Ubuntu版本:$

python命令行参数详解 python命令行参数详解 Dec 18, 2023 pm 04:13 PM

在Python中,可以通过命令行传递参数给脚本。这些参数可以在脚本内部使用,以便根据不同的输入执行不同的操作。Python命令行参数的详解:1、位置参数:在命令行中按照顺序传递给脚本的参数,它们可以在脚本内部通过位置来访问;2、命令行选项:以-或--开头的参数,通常用于指定脚本的特定选项或标志;3、传递参数值:通过命令行传递参数值。

Django初探:用命令行创建你的首个Django项目 Django初探:用命令行创建你的首个Django项目 Feb 19, 2024 am 09:56 AM

Django项目开启之旅:从命令行开始,创建你的第一个Django项目Django是一个强大而又灵活的Web应用框架,它以Python为基础,提供了许多开发Web应用所需的工具和功能。本文将带领你从命令行开始,创建你的第一个Django项目。在开始之前,请确保你已经安装了Python和Django。步骤一:创建项目目录首先,打开命令行窗口,并创建一个新的目录

如何通过Linux命令行工具进行日志聚合和统计? 如何通过Linux命令行工具进行日志聚合和统计? Jul 30, 2023 pm 10:07 PM

如何通过Linux命令行工具进行日志聚合和统计?在管理和维护Linux系统时,日志记录是非常重要的一项工作。通过日志可以查看系统运行情况、排查问题以及进行性能分析。而对于大规模的系统,日志的数量往往非常庞大,如何高效地对日志进行聚合和统计,成为了运维人员面临的一个挑战。在Linux系统中,我们可以利用命令行工具来进行日志聚合和统计。下面将介绍几个常用的命令行

如何利用MySQL和C++开发一个基于命令行的图书管理系统 如何利用MySQL和C++开发一个基于命令行的图书管理系统 Sep 20, 2023 pm 01:48 PM

如何利用MySQL和C++开发一个基于命令行的图书管理系统概要:在本文中,我们将介绍如何使用MySQL和C++开发一个简单的基于命令行的图书管理系统。我们将涵盖从数据库设计到C++代码实现的整个过程,并提供具体的代码示例。介绍:图书管理系统是一个常见的应用程序,用于管理图书馆或个人的图书收藏。通过使用MySQL作为数据库和C++作为编程语言,我们可以方便地实

See all articles