后端即时通讯【免费下载链接】easywechat 一个 PHP 微信 SDK项目地址https://gitcode.com/gh_mirrors/ea/easywechat点击查看免费下载EasyWeChat 的数据统计与分析模块$app-stats封装了微信公众平台官方的数据统计datacube接口让开发者可以在自己的 PHP 项目中以与公众平台官网统计模块一致但又更灵活的方式拉取用户增长、图文阅读、消息收发与接口调用等运营数据并在此基础上做二次加工处理。读完本文你将掌握 stats 实例的获取方式、$from/$to日期参数的约束规则、全部 16 个统计 API 的方法签名与最大时间跨度并能用真实可运行的代码完成数据拉取与本地化存储。模块定位为什么需要数据统计接口公众号后台虽然自带统计模块但官方页面只能人工查看无法与自有业务系统打通。微信公众平台为此提供了数据统计类接口即官方文档中的数据统计章节开发者可以通过接口拉取用户分析数据每日新增、取消关注与累计关注用户数图文分析数据图文群发每日/总量、阅读、分享转发及对应分时数据消息分析数据消息发送概况、分时、周/月汇总及分布数据接口分析数据接口调用概况与分时数据。EasyWeChat 将以上接口全部封装进stats服务调用时只需传入起止日期返回值为结构化的数组数据方便直接入库或做图表展示。获取 stats 实例在 EasyWeChat 3.x 中所有服务都通过主入口类EasyWeChat\Foundation\Application获取。初始化应用后通过stats属性即可拿到数据统计服务实例?php use EasyWeChat\Foundation\Application; // 全局配置app_id / secret / token 等详见 docs/src/3.x/configuration.md $options [ debug true, app_id your-app-id, secret you-secret, token easywechat, // ... ]; $app new Application($options); $stats $app-stats;与$app-user、$app-menu、$app-material等服务的获取方式一致参见 3.x 快速开始教程 中所有的服务都通过主入口 Application 类来获取的说明拿到$stats后即可直接调用下述统计方法。需要说明的是本模块接口能力与公众平台官网数据统计模块一致但通过接口方式获取后可以自由进行高级处理聚合、对比、导出、告警等。日期参数规则$from 与 $to所有统计 API 都接收两个日期参数$from example: 2014-02-13 获取数据的起始日期 $to example: 2014-02-18 获取数据的结束日期$to 允许设置的最大值为昨日使用时有两点硬性约束$to不能超过昨日微信侧统计数据的产出存在延迟当天数据尚未完全统计完成因此结束日期最大只能取昨天日期差值必须小于最大时间跨度每个接口都有各自的最大时间跨度见下文 API 表格。例如最大时间跨度为 1 时$from与$to的差值只能为 0即必须查询同一天才能满足小于 1的要求否则接口会报错。因此正确用法是先确认目标接口的最大时间跨度再据此构造日期范围避免跨度过大导致调用失败。API 一览16 个统计方法与最大时间跨度以下为 3.xstats服务提供的全部方法返回类型均为array方法功能最大时间跨度userSummary($from, $to)获取用户增减数据7userCumulate($from, $to)获取累计用户数据7articleSummary($from, $to)获取图文群发每日数据1articleTotal($from, $to)获取图文群发总数据1userReadSummary($from, $to)获取图文统计数据3userReadHourly($from, $to)获取图文统计分时数据1userShareSummary($from, $to)获取图文分享转发数据7userShareHourly($from, $to)获取图文分享转发分时数据1upstreamMessageSummary($from, $to)获取消息发送概况数据7upstreamMessageHourly($from, $to)获取消息发送分时数据1upstreamMessageWeekly($from, $to)获取消息发送周数据30upstreamMessageMonthly($from, $to)获取消息发送月数据30upstreamMessageDistSummary($from, $to)获取消息发送分布数据15upstreamMessageDistWeekly($from, $to)获取消息发送分布周数据30upstreamMessageDistMonthly($from, $to)获取消息发送分布月数据30interfaceSummary($from, $to)获取接口分析数据30interfaceSummaryHourly($from, $to)获取接口分析分时数据1按业务维度可将这 17 个方法表格中用户分析 2 个、图文分析 6 个、消息分析 8 个、接口分析 2 个归为四类用户分析最大跨度 7 天userSummary按日返回新增关注new_user与取消关注cancel_user数量以及用户来源user_sourceuserCumulate按日返回累计关注用户总量。图文分析articleSummary/articleTotal图文群发的每日数据与总数据最大跨度均为 1 天即每次只能查询单日userReadSummary图文阅读统计数据跨度 3 天userReadHourly图文阅读分时数据跨度 1 天userShareSummary/userShareHourly图文分享转发数据及其分时数据跨度分别为 7 天与 1 天。消息分析upstreamMessageSummary概况7 天、upstreamMessageHourly分时1 天upstreamMessageWeekly/upstreamMessageMonthly周/月数据跨度 30 天upstreamMessageDistSummary分布数据15 天、upstreamMessageDistWeekly/upstreamMessageDistMonthly分布周/月数据跨度 30 天。接口分析interfaceSummary接口调用概况数据跨度可达 30 天interfaceSummaryHourly接口调用分时数据跨度 1 天。规律小结凡是分时类接口最大跨度都是1概况/分布类接口跨度在715天周/月汇总类接口跨度最大可达30天。编写定时任务时可据此为每个接口单独设计合理的拉取批次。实战示例拉取用户增减数据以userSummary为例查询 2014-12-07 至 2014-12-08 两天的用户增减情况$userSummary $stats-userSummary(2014-12-07, 2014-12-08); var_dump($userSummary); // //[ // { // ref_date: 2014-12-07, // user_source: 0, // new_user: 0, // cancel_user: 0 // } // //后续还有ref_date在begin_date和end_date之间的数据 // ]返回结果中每一项为一个按日聚合的对象ref_date数据日期user_source用户来源渠道0 表示其他合计具体枚举值以微信官方协议为准new_user当日新增关注人数cancel_user当日取消关注人数。由于userSummary的最大时间跨度为 7且日期差值需严格小于跨度上述示例中2014-12-07与2014-12-08差值为 1满足 7因此可一次查询两天若换成articleSummary跨度为 1则只能查询(2014-12-07, 2014-12-07)这种同一天的范围。其余方法调用方式完全一致仅需按各自的最大时间跨度调整日期范围例如$cumulate $stats-userCumulate(2014-12-01, 2014-12-07); // 跨度 7一次可拉一周 $reads $stats-userReadSummary(2014-12-05, 2014-12-07); // 跨度 3 $api $stats-interfaceSummary(2014-11-15, 2014-12-14); // 跨度 30一次可拉一个月三个必须注意的使用限制原文档明确指出了以下三点直接影响数据正确性务必遵守数据起始时间限制接口侧的公众号数据库中仅存储了2014 年 12 月 1 日之后的数据早于此日期的查询将查不到数据即使偶然查到也属于不可信的脏数据不能用于分析必须本地化存储微信侧不会长期保存全部历史明细请开发者在调用接口获取数据后将数据保存在自身数据库中——这样既加快了下次用户的访问速度不必重复请求微信也降低了微信侧接口调用的不必要损耗图文统计的聚合门槛获取图文群发每日数据articleSummary时只有中间页阅读人数 原文页阅读人数 分享转发人数 分享转发次数 收藏次数 3的结果才会被统计返回阅读量过小的图文消息将无法统计到。数据本地化存储与定时任务建议结合上述第二条限制推荐的生产实践是编写一个每日定时任务cron在次日凌晨拉取截至昨日的数据并入库。伪代码如下$stats (new Application($options))-stats; $today date(Y-m-d); $yesterday date(Y-m-d, strtotime(-1 day)); // 按接口的最大时间跨度分批拉取这里以跨度 7 的用户分析为例 $from date(Y-m-d, strtotime(-7 day)); $rows $stats-userSummary($from, $yesterday); foreach ($rows as $row) { // 以 ref_date user_source 为唯一键 upsert 入库实现幂等 saveToDatabase($row); }要点所有查询的$to一律取昨日今日数据微信侧尚未统计完成根据每个接口的最大时间跨度切分批次避免超出跨度报错以ref_date及user_source等维度字段作为唯一键做增量入库重复执行不产生脏数据。与仓库其它统计能力的关联在 EasyWeChat 的文档体系中stats是数据统计与分析的统称除公众号官方账号外还覆盖其它场景小程序docs/src/3.x/mini_program.md中提供了$miniProgram-stats-summaryTrend(20170313, 20170313)等小程序数据分析用法注意小程序侧日期格式为YYYYMMDD且可查询当日数据摇一摇周边docs/src/3.x/shake-around.md中提供了$shakearound-stats()-deviceSummary(...)、batchDeviceSummary(...)、pageSummary(...)、batchPageSummary(...)等设备/页面统计方法参数使用时间戳格式如1425052800素材管理docs/src/3.x/material.md中的$material-stats()用于获取素材总数统计。如果你的业务同时运营公众号、小程序与摇一摇周边可以按统一维度日期 渠道汇总各自 stats 数据构建完整的运营数据看板。总结EasyWeChat 3.x 的stats模块用一套统一的日期区间 方法名模式覆盖了公众号用户、图文、消息、接口四大类统计场景。使用时牢记三条规则即可顺畅接入$to最大取昨日、日期差值必须小于接口最大时间跨度、2014-12-01 之前的数据不可用。配合本地数据库的增量存储即可构建稳定、低损耗的运营数据分析链路。更多协议级细节如各字段完整枚举与返回结构可参考微信官方文档数据统计章节本模块的完整方法清单与示例均可在 docs/src/3.x/anaylsis.md 中查阅。赞分享后端即时通讯【免费下载链接】easywechat 一个 PHP 微信 SDK项目地址https://gitcode.com/gh_mirrors/ea/easywechat点击查看免费下载相关推荐MaaAssistantArknights 集成战略肉鸽辅助协议从 recruitment.json 到 autopilot 作战逻辑的完整配置指南MaaAssistantArknights 集成战略肉鸽辅助协议从 recruitment.json 到 autopilot 作战逻辑的完整配置指南 本篇后端即时通讯EasyWeChat 4.x 小程序数据统计与分析data_cube实战指南EasyWeChat 4.x 小程序数据统计与分析data_cube实战指南 本指南围绕 EasyWeChat 4.x 中小程序的「数据统计与分析」 da后端即时通讯Nano ID社区贡献指南如何参与开源项目Nano ID社区贡献指南如何参与开源项目 你是否曾想为开源项目贡献力量但不知道从何入手作为一个轻量级109字节、安全、URL友好的唯一字符串ID生成后端即时通讯上一篇鲲鹏安全库kunpengsecl性能优化指南提升远程证明效率的5个技巧下一篇如何解决libarchive内存泄漏问题openeuler/libarchive-rust项目全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
