dede一键更新 自动

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 DEDE建站 正文

“一键更新”通常包含两个层面:

dede一键更新 自动
(图片来源网络,侵删)
  1. 手动一键更新:在后台点击一个按钮,完成所有需要更新的操作。
  2. 定时自动更新:设置一个任务,让系统在固定时间(比如每天凌晨)自动执行更新,无需人工干预。

下面我将分步为你讲解如何实现这两种方式。


第一部分:手动“一键更新”实现方法

这是最基础也是最直接的方法,你只需要在 DedeCMS 后台的几个关键位置点击更新即可。

核心思路: 按照依赖关系,从底层到顶层依次更新。

标准操作流程(请按顺序执行):

dede一键更新 自动
(图片来源网络,侵删)
  1. 更新文档HTML

    • 进入后台 -> 系统 -> 一键更新 -> 更新文档HTML
    • 这里有两个选项:
      • 仅动态更新:只更新设置为“仅动态”的文档,速度快,但访问时需要调用PHP。
      • 生成HTML:将所有文档生成静态HTML文件,对服务器CPU有轻微负载,但访问速度快。
    • 建议:选择 生成HTML,然后点击“开始更新”,这是最彻底的更新。
  2. 更新栏目HTML

    • 在同一个“一键更新”页面,找到 更新栏目HTML
    • 点击“开始更新”,这会重新生成所有栏目列表页的HTML文件。
  3. 更新首页HTML

    • 继续在同一页面,找到 更新首页HTML
    • 点击“开始更新”,重新生成网站首页的HTML文件。
  4. 更新其他缓存

    • 进入后台 -> 系统 -> 系统设置 -> 系统基本参数 -> 性能选项
    • 在页面底部,你会看到 “更新系统缓存” 按钮,点击它,这会更新网站的核心配置缓存,确保最新的设置生效。

按照 文档 -> 栏目 -> 首页 -> 系统缓存 这个顺序点击一遍,就完成了最完整的手动一键更新。


第二部分:定时自动更新实现方法

这才是真正的“自动化”,我们可以利用 Linux 系统的 Crontab 定时任务功能,让服务器在指定时间自动执行后台的更新脚本。

实现步骤:

步骤 1:创建一个可被外部调用的PHP更新脚本

我们需要一个脚本,用来模拟点击后台更新按钮的动作。

  1. 创建脚本文件: 在你的网站根目录(与 /dede 文件夹同级的目录)下,创建一个新文件,auto_update.php

  2. 编写脚本代码: 将以下代码复制并粘贴到 auto_update.php 文件中。

    <?php
    /**
     * DedeCMS 自动更新脚本
     * 使用方法: 通过定时任务调用此脚本
     */
    // 设置网站根目录,如果此文件不在根目录,请修改路径
    define('DEDEROOT', dirname(__FILE__));
    // 引入数据库配置文件
    require_once DEDEROOT . '/data/config.php';
    // 引入dede核心文件
    require_once DEDEROOT . '/dede/include/common.inc.php';
    // 检查登录状态(如果需要,可以跳过,直接执行更新逻辑)
    // 如果你的后台有登录验证,这里需要处理session,但为了自动化,我们直接调用更新函数。
    echo "===== 开始自动更新 DedeCMS ===== \n";
    // 1. 更新文档HTML
    echo "正在更新文档HTML... \n";
    $dopost = 'all';
    $channelid = -1;
    $startid = 0;
    $idend = 0;
    $typeid = 0;
    $mkvalue = '';
    $arcmode = 0;
    $typearray = '';
    $pagesize = 100;
    $isremote = 0;
    $startpage = 1;
    $endpage = 1;
    // 调用更新文档的函数
    $arcser = new Archives();
    $arcser->MakeHtml($dopost, $channelid, $startid, $idend, $typeid, $mkvalue, $arcmode, $typearray, $pagesize, $isremote, $startpage, $endpage);
    echo "文档HTML更新完成! \n";
    // 2. 更新栏目HTML
    echo "正在更新栏目HTML... \n";
    $typeid = 0; // 0 表示更新所有栏目
    $isremote = 0;
    // 调用更新栏目的函数
    $cSer = new TypeClass();
    $cSer->TypeList($typeid, $isremote);
    echo "栏目HTML更新完成! \n";
    // 3. 更新首页HTML
    echo "正在更新首页HTML... \n";
    $isremote = 0;
    // 调用更新首页的函数
    $memberv = new MemberView();
    $memberv->ShowIndex();
    echo "首页HTML更新完成! \n";
    // 4. 更新系统缓存 (可选,但推荐)
    echo "正在更新系统缓存... \n";
    $dsql->ExecuteNoneQuery("DELETE FROM `#@__syscache`");
    echo "系统缓存已清空,下次访问时会自动重建。 \n";
    echo "===== 自动更新全部完成 ===== \n";
    ?>

    代码说明

    • 这个脚本直接调用了 DedeCMS 内部的类和方法来执行更新,模拟了后台的操作。
    • echo 语句是为了在命令行执行时能看到日志,方便排查问题。
    • 你可以根据需要调整更新逻辑,比如只更新部分栏目等。

步骤 2:设置服务器定时任务 (Crontab)

我们需要告诉服务器在每天固定时间执行这个 auto_update.php 脚本。

  1. 登录你的服务器: 通过 SSH 连接到你的 Linux 服务器。

  2. 编辑 Crontab: 输入命令 crontab -e,然后按 Enter,如果是第一次使用,会让你选择一个编辑器(nano),按 Enter 即可。

  3. 添加定时任务: 在打开的文件末尾,添加下面这一行代码。

    # 每天凌晨2点自动更新DedeCMS网站
    0 2 * * * /usr/bin/php -f /www/wwwroot/你的网站域名/auto_update.php > /www/wwwroot/你的网站域名/cron_log.log 2>&1

    代码解释

    • 0 2 * * *:这是时间设置,表示 每天凌晨2点整 执行。
      • 0:分钟 (0-59)
      • 2:小时 (0-23)
      • 日期 (1-31)
      • 月份 (1-12)
      • 星期 (0-7)
    • /usr/bin/php:这是你服务器上 PHP 的可执行文件路径。你需要确认这个路径是否正确,可以通过 which php 命令来查找。
    • -f:表示 PHP 以文件模式运行。
    • /www/wwwroot/你的网站域名/auto_update.php这是你上一步创建的脚本的绝对路径,请务必修改成你自己的路径。
    • > /www/wwwroot/你的网站域名/cron_log.log:将脚本的标准输出重定向到一个日志文件中,方便查看执行结果。
    • 2>&1:将错误输出也重定向到同一个日志文件中。
  4. 保存并退出: 在 nano 编辑器中,按 Ctrl + X,然后按 Y,再按 Enter 保存。

步骤 3:验证和测试

  1. 检查 Crontab 是否生效: 输入 crontab -l,你应该能看到你刚刚添加的那行任务。

  2. 手动测试脚本: 为了确保脚本没有问题,可以先手动执行一次。

    /usr/bin/php -f /www/wwwroot/你的网站域名/auto_update.php

    执行后,检查网站是否已更新,并查看 cron_log.log 文件内容,看是否有报错。

  3. 等待定时任务执行: 你可以修改时间为几分钟之后(*/2 * * * * 表示每2分钟执行一次),等待几分钟,然后去检查 cron_log.log 和网站更新情况,确认无误后,再改回你想要的执行时间(如每天凌晨2点)。


重要注意事项

  1. 文件权限: 确保 auto_update.php 文件以及它所在的目录有正确的执行权限,网站文件权限设置为 755,PHP 文件权限设置为 644

    chmod 755 /www/wwwroot/你的网站域名/
    chmod 644 /www/wwwroot/你的网站域名/auto_update.php
  2. 服务器环境: 此方法主要适用于 Linux + Apache/Nginx + PHP 的虚拟主机或 VPS/服务器,如果是 Windows 服务器,则需要使用“计划任务”功能,原理类似,只是设置方式不同。

  3. 安全考虑auto_update.php 这个文件拥有很高的权限,可以操作你的网站。请务必将其命名得复杂且不易猜测d3d3_aut0upd4t3.phpz),并且在更新完成后可以考虑将其删除或重命名,以防被恶意利用。

  4. 服务器负载: 如果你的网站文章量非常大(几十万甚至上百万),更新所有文档可能会消耗大量服务器资源(CPU、内存),可能导致网站卡顿甚至超时,对于大型网站,建议分时段、分批次更新,或者只更新重要栏目。

通过以上步骤,你就可以轻松实现 DedeCMS 的手动一键更新和定时自动更新了。

-- 展开阅读全文 --
头像
C语言中如何实现日期格式化?
« 上一篇 03-02
dede升级后台编辑器
下一篇 » 03-02

相关文章

取消
微信二维码
支付宝二维码

目录[+]