更多常见问题请点击这里。
2021 年1 月常见问题
1.【云引擎】定时任务有超时限制吗?
我们建议将代码中的任务转化为异步队列处理,以优化运行时间,避免云函数或定时任务发生超时。
例如:
在存储服务中创建一个队列表,包含 status
列;
接到任务后,向队列表保存一条记录,status
值设置为 处理中
,然后将请求结束掉,将队列对象的 id 发给客户端(旧版本的 SDK 使用 response.success(id)
):
return new Promise((resolve, reject) => {
resolve(id);
});
当业务处理完毕,根据处理结果更新刚才的队列对象状态,将 status
字段设置为 完成
或者 失败
;
在任何时候,在控制台通过队列 id
可以获取某个任务的执行结果,判断任务状态。
详情参考文档: 超时的处理方案。
2.【即时通信】怎么才能取到超过 100 条未读的真实未读条数?
目前公有云不支持单个会话里单个成员的未读数超过 100。
通常来说,客户端的 UI 界面也不需要精确展示超过 100 的未读数,一般的处理方式是显示 99+ 。
然后消息查询接口是可以根据消息 ID 以及消息时间戳的组合条件查询所有历史消息的,所以它能支持 UI 展示一个会话里的所有消息,不会存在遗漏消息的情况。
详细用法参考文档:聊天记录查询。
3.【数据存储】日志表如何设计。比如某个时间点线程和访问量突然增加,想知道是谁访问的,这种情况应该怎么设计日志表?
日志表是指用来存储只增不减不改的数据(以日志为代表),并不仅用来保存访问日志。日志表的使用和普通表一样,都是通过我们的 SDK 来提交 AVObject。但是日志表与普通表还有一些差异:
日志表不能实时展示,在控制台页无法看到当天的日志表数据(延后一天集中导入);
日志表只能通过离线数据分析进行查询,不能通过普通的 AVQuery 查询。
如果想知道访问量的增减情况,光用日志表可能解决不了这个问题,因为一般不会在客户端同时提交两条数据:一条是正常的数据,一条是日志数据(记录你想要记录的客户端信息)。一般这种情况下,需要自己在云引擎里进行记录,并调用 API 将访问信息保存到日志表。
对于访问量的统计,可以看一下控制台的用量统计,那里可以找到什么平台对什么 Class 的什么操作请求量比较大,然后可以结合业务代码判断一下是什么原因导致的。