Skip to content

定时任务和订阅

插件如果有定时任务或者订阅需求,可在插件安装时执行命令字添加至主程序中,卸载时执行取消命令字。

定时任务

php
//建立定时任务
\FresnsCmdWord::plugin('Fresns')->addCrontabItem($wordBody);

//取消定时任务
\FresnsCmdWord::plugin('Fresns')->removeCrontabItem($wordBody);
参数说明
fskey定时任务插件
cmdWord定时任务插件命令字
cronTableFormat定时任务执行周期(Laravel 定时任务表达式)
  • 主程序根据任务周期,循环请求插件的命令字。
Laravel 定时任务表达式

*(0~59 分) *(0~23 小时) *(1~31 号) *(1-12 月) *(0-7 星期,0 和 7 都代表星期日)

  • * (星号):代表任何时刻都接受的意思。例:0 10 * * * command 日、月、周都是 *,就代表着不论何月、何日的星期几的 10:00 都执行后续命令的意思。
  • , (逗号):代表分隔时段的意思。例:要执行的工作是 2:003:00 时,就会是:0 2,3 * * * command时间还是有五列,不过第二列是 2,3 ,代表 2 与 3 都适用。
  • - (减号):代表一段时间范围内,例:8 点到 11 点之间的每小时的 18 分都进行一项工作:18 8-11 * * * command 仔细看到第二列变成 8-11,代表 8,9,10,11,12 都适用的。
  • /n (斜线):那个 n 代表数字,即是每隔 n 单位间隔的意思,例:每五分钟进行一次,则:*/5 * * * *

订阅数据表数据活动

插件订阅数据表动态(所有数据表均可订阅)。告之主程序订阅哪张表,以及发生动态时,执行自己或者代理插件的哪个命令字;当订阅的数据表发生「新增」记录时,主程序执行插件指定的命令字。

php
//建立订阅
\FresnsCmdWord::plugin('Fresns')->addSubscribeItem($wordBody);

//取消订阅
\FresnsCmdWord::plugin('Fresns')->removeSubscribeItem($wordBody);
参数说明
type订阅类型 type = 1
fskey订阅者(插件)
cmdWord订阅者的命令字
subject订阅哪张表
  • 当数据表发生新增记录时,会将 tableNameprimaryId 信息传参给订阅者的命令字 cmdWord
    • tableName = 表名
    • primaryId = 主键 ID
  • 活动类型支持 created, updated, deleted
php
//订阅通知示例
\FresnsCmdWord::plugin('YourFskey')->yourCmdWord([
    'tableName' => '表名',
    'primaryId' => '主键 ID',
    'changeType' => '活动类型',
]);
php
use App\Utilities\SubscribeUtility;

// 活动类型
SubscribeUtility::CHANGE_TYPE_CREATED;
SubscribeUtility::CHANGE_TYPE_UPDATED;
SubscribeUtility::CHANGE_TYPE_DELETED;

订阅用户活跃状态

插件订阅 headers 信息中用户请求。告之主程序订阅事件发生后执行自己的哪个命令字;当主程序 API 请求 headers 信息中含有用户信息后,主程序执行插件指定的命令字。

php
//建立订阅
\FresnsCmdWord::plugin('Fresns')->addSubscribeItem($wordBody);

//取消订阅
\FresnsCmdWord::plugin('Fresns')->removeSubscribeItem($wordBody);
参数说明
type订阅类型 type = 2
fskey订阅者(插件)
cmdWord订阅者的命令字
php
//订阅通知示例
$wordBody = [
    'ip' => request()->ip(),
    'port' => $_SERVER['REMOTE_PORT'],
    'uri' => request()->getRequestUri(),
    'routeName' => request()->route()->getName(),
    'headers' => AppHelper::getHeaders(),
    'body' => $dtoRequest->toArray(),
];

\FresnsCmdWord::plugin('YourFskey')->yourCmdWord($wordBody);

订阅登录通知

当账号或用户登录后,通知订阅者命令字。

php
//建立订阅
\FresnsCmdWord::plugin('Fresns')->addSubscribeItem($wordBody);

//取消订阅
\FresnsCmdWord::plugin('Fresns')->removeSubscribeItem($wordBody);
参数说明
type订阅类型 type = 3
fskey订阅者(插件)
cmdWord订阅者的命令字
php
//订阅通知示例
$wordBody = [
    'primaryId' => [
        'accountId' =>  '账号数据表主键 ID',
        'userId' => '用户数据表主键 ID',
    ],
    'authToken' => [
        "aid": "String / 账号 ID",
        "aidToken": "String / 账号登录凭证",
        "uid": "String / 用户 ID",
        "uidToken": "String / 用户登录凭证",
        "expiredHours": "Number / 有效期小时数,null 代表永久有效",
        "expiredDays": "Number / 有效期天数,null 代表永久有效",
        "expiredDateTime": "String / 凭证有效时间,null 代表永久有效,格式为 Y-m-d H:i:s", // UTC+0
    ],
    'accountDetail' => [
        // 通用数据结构->账号信息
    ],
    'userDetail' => [
        // 通用数据结构->用户信息
    ],
];

\FresnsCmdWord::plugin('YourFskey')->yourCmdWord($wordBody);

订阅浏览通知

当浏览用户、小组、话题、地理、帖子、评论时,触发订阅通知。

php
//建立订阅
\FresnsCmdWord::plugin('Fresns')->addSubscribeItem($wordBody);

//取消订阅
\FresnsCmdWord::plugin('Fresns')->removeSubscribeItem($wordBody);
参数说明
type订阅类型 type = 4
fskey订阅者(插件)
cmdWord订阅者的命令字
subject订阅哪种查看类型
php
use App\Utilities\SubscribeUtility;

// 查看类型
SubscribeUtility::VIEW_TYPE_USER;
SubscribeUtility::VIEW_TYPE_GROUP;
SubscribeUtility::VIEW_TYPE_HASHTAG;
SubscribeUtility::VIEW_TYPE_POST;
SubscribeUtility::VIEW_TYPE_COMMENT;
php
//订阅通知示例
$wordBody = [
    'ip' => request()->ip(),
    'port' => $_SERVER['REMOTE_PORT'],
    'uri' => request()->getRequestUri(),
    'routeName' => request()->route()->getName(),
    'headers' => AppHelper::getHeaders(),
    'type' => $type, // user, group, hashtag, post, comment
    'fsid' => $fsid,
    'viewType' => $viewType, // list or detail
    'authUserId' => $authUserId,
];

\FresnsCmdWord::plugin('YourFskey')->yourCmdWord($wordBody);

Released under the Apache-2.0 License