定时任务
检查并处理用户主角色过期
每隔 10 分钟执行一次用户主角色过期时间检测
php
\FresnsCmdWord::plugin('Fresns')->checkUserRoleExpired()- 1、筛选
user_roles表,字段type=2+expired_at 小于当前时间的记录(时间小于,说明已经过期)。 - 2、判断该记录
restore_role_id字段是否有值。- 2.1、有值,判断该值是否已经和该用户关联:
- 2.1.1、已关联:删除该条过期记录,将已关联的记录
type字段值改为2 - 2.1.2、无关联:删除该条过期记录,以
restore_role_id字段值(角色 ID)创建一条新记录,并且type字段值为2
- 2.1.1、已关联:删除该条过期记录,将已关联的记录
- 2.2、无值:中止任务,暂不做任何操作。
- 2.1、有值,判断该值是否已经和该用户关联:
检查并处理注销账号的删除
每隔 6 小时执行一次用户注销任务
php
\FresnsCmdWord::plugin('Fresns')->checkDeleteAccount()逻辑注销:不删除数据,只标注状态
- 在
accounts表phone 和 email字段现有内容前加上deleted#YmdHis#前缀,YmdHis为当前执行任务时的时间; - 物理删除
account_connects表关联信息; - 为避免遗漏,定时任务每次都检测库里所有
accounts->deleted_at有值的用户,如果phone 和 email前缀有deleted#则代表执行过任务,则跳过,如果没有则执行任务。 - 配置表
delete_account_todo键值规定时间内的不处理;比如当前执行任务时,配置的是 7 天,则查询所有记录时,7 天内的不查(不处理)。
物理注销:物理删除数据(真实删除)
- 删除用户以下表的所有记录
accountsaccount_connectsaccount_walletsaccount_wallet_logssession_tokenssession_logsplugin_badgesusersuser_statsuser_extcredits_logsuser_rolesuser_likesuser_followsuser_blocksfiles头像file_usagesnotificationsseopostspost_logscommentscomment_logs
- 为避免遗漏,定时任务每次都检测库里所有
accounts->deleted_at有值的用户,如果存在则执行物理删除。 - 配置表
delete_account_todo键值规定时间内的不处理;比如当前执行任务时,配置的是 7 天,则查询所有记录时,7 天内的不查(不处理)。
检查并更新版本信息
每隔 8 小时执行一次插件版本情况,检查是否有新版。
php
\FresnsCmdWord::plugin('Fresns')->checkPluginsVersions()- 1、向 Fresns 官方发送已安装插件清单(插件和独立应用),接口返回该清单插件的最新版本号。
- 2、对比插件表版本号,如果不一致,更新版本号
is_upgrade = 1upgrade_version = 接口返回的版本号