指令结束监听扩展
通过 Filter_Plugin_Cmd_End 接口,可以在 Z-BlogPHP 的指令入口 zb_system/cmd.php 完成全部动作分发之后执行自定义逻辑,适合记录操作日志、清理临时数据等收尾场景。
接口信息
| 接口 | 参数 | 说明 |
|---|---|---|
Filter_Plugin_Cmd_End | 无 | cmd.php 的结束接口,可以在这里拦截各种 action 之后的处理 |
完整案例
下例在每次 cmd.php 请求处理结束时,把动作名与访客 IP 记入日志:
php
<?php
RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");
function ActivePlugin_demoAPP()
{
Add_Filter_Plugin('Filter_Plugin_Cmd_End', 'demoAPP_Cmd_End');
}
function demoAPP_Cmd_End()
{
global $zbp;
$log = date('Y-m-d H:i:s') . ' cmd end, action=' . $zbp->action . ', ip=' . GetGuestIP() . PHP_EOL;
file_put_contents($zbp->usersdir . 'plugin/demoAPP/cmd.log', $log, FILE_APPEND | LOCK_EX);
}注意事项
- 触发位置在
zb_system/cmd.php文件末尾,所有switch ($zbp->action)分发执行完毕之后; - 核心的跳转函数
Redirect_cmd_end()只发送 302 跳转头而不终止脚本,因此大多数以跳转收尾的动作同样会触发本接口; - 接口没有参数,需要修改跳转地址应在更早的
Filter_Plugin_Cmd_Redirect接口中处理,而不是本接口; - 此时请求即将结束,适合做日志、统计等轻量收尾,不宜再输出正文内容。