discuz每日定时清理用户组积分

创建任务脚本

./source/include/cron/ 目录下新建 clearcredits_daily.inc.php,示例如下:

<?php

if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

// 指定要清空积分的字段(如 extcredits1)
$creditfield = 'extcredits1';

// 指定需要清理积分的用户组 ID(例如:10, 11, 12)
$target_groupids = array(10, 11, 12);

// 查询符合条件的 uid 列表
$uids = array();
$query = DB::query("SELECT uid FROM ".DB::table('common_member')." WHERE groupid IN (".dimplode($target_groupids).")");
while($row = DB::fetch($query)) {
    $uids[] = $row['uid'];
}

// 执行积分清零
if(!empty($uids)) {
    DB::query("UPDATE ".DB::table('common_member_count')." SET `$creditfield` = 0 WHERE uid IN (".dimplode($uids).")");
}

添加计划任务步骤(后台操作)

  1. 进入后台:后台 > 工具 > 计划任务 > 添加

  2. 填写:

    • 任务名称:每日清零指定用户组积分

    • 脚本文件clearcredits_daily.inc.php

    • 执行时间:设置为每天运行,比如凌晨 03:00

注意事项

  • 你可以修改 $creditfield 为其他积分类型,如 extcredits2 等。

  • 如果你想清零多个积分字段,可以在 UPDATE 中写多个字段。

  • 如需限制为某些子用户组,可改为 adminid 或加 fid 条件等。

阅读剩余
THE END