You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Backdrop CMS创建无Bee的命令行脚本以运行长耗时例程?

在Backdrop CMS里写无Bee依赖的命令行脚本

核心逻辑

Backdrop本身支持通过PHP CLI直接加载核心环境,不用依赖Bee也能写独立脚本——先把Backdrop的运行环境初始化好,再写你的耗时业务逻辑就行,比如夜间批量导入记录。

具体步骤

1. 新建脚本文件

在Backdrop根目录(或者你自己的自定义模块目录里)新建一个PHP脚本,比如nightly_import.php。

2. 初始化Backdrop环境

脚本开头先加这段代码,确保能调用Backdrop的核心功能:

<?php
// 定义Backdrop根目录路径,要是脚本不在根目录就改路径
define('BACKDROP_ROOT', getcwd());

// 加载Backdrop的引导文件
require_once BACKDROP_ROOT . '/includes/bootstrap.inc';

// 启动Backdrop,BACKDROP_BOOTSTRAP_FULL会加载所有模块和配置,适合需要完整功能的场景
backdrop_bootstrap(BACKDROP_BOOTSTRAP_FULL);

// 可选:设置命令行环境标识,避免某些模块做浏览器相关的处理
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['HTTP_USER_AGENT'] = 'CLI Import Script';

3. 写你的业务代码

接下来就可以加批量导入的逻辑了,比如:

// 示例:批量导入数据
$import_data = get_import_source(); // 自己写的函数,从数据源(比如CSV、数据库)拿要导入的记录
$processed_count = 0;

foreach ($import_data as $record) {
  // 这里写具体的导入逻辑,比如创建节点、保存实体
  $node = new stdClass();
  $node->type = 'article';
  $node->title = $record['title'];
  $node->body[LANGUAGE_NONE][0]['value'] = $record['content'];
  node_save($node);
  
  $processed_count++;
  // 每处理100条输出个进度,方便看运行状态
  if ($processed_count % 100 == 0) {
    print "已处理 {$processed_count} 条记录\n";
  }
}

print "导入完成!总共处理了 {$processed_count} 条记录\n";

4. 命令行运行脚本

直接用PHP CLI执行就行:

php nightly_import.php

5. 设置定时自动运行(可选)

要夜间自动跑的话,用系统的定时任务:

  • Linux/macOS:编辑crontab(crontab -e),加一行:
0 2 * * * cd /你的backdrop根目录路径 && php nightly_import.php >> import_log.txt 2>&1

这行表示每天凌晨2点运行脚本,输出的日志和错误都写到import_log.txt里,方便后续排查。

注意点

  • 权限问题:运行脚本的用户得有Backdrop文件目录的读写权限,不然导入的时候容易出权限错误。
  • 性能优化:数据量特别大的话,建议分批次处理,避免内存溢出;也可以加backdrop_set_time_limit(0)取消脚本的执行时间限制。
  • 错误处理:最好加try-catch块捕获异常,把错误信息写到日志里,出问题了好查。

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:12:45