首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

读取到会话数据以后,我们会对获取到的会话进行过滤操作,比如不是同一个组织下的会话应该过滤掉。...但是这里必须注意线程安全问题,否则会出现数据多次被添加,“消息”列表上出现多条重复的数据。...逻辑看似没问题,但是却把通知页面刷新的代码写在循环当中,也就是每更新完一条会话数据,就通知页面刷新一次,如果有 100 条会话就需要刷新 100 次。...所以此处也改为了局部刷新刷新当前有人 typing 的会话 item。...比如“消息”列表第五个会话收到了新消息,这时第五个会话需要移动到第一个会话,如果不刷新整个列表,就会出现重复会话的问题。

1.5K20

一次 PHP 并发性能调优实战 -- 性能提升 104%

如果你有 php 使用经验, 那肯定就更好了 业务背景 框架及相应环境 laravel5.7, mysql5.7, redis5, nginx1.15 centos 7.5 bbr docker, docker-compose...我们知道 Laravel 的性能是出了名的不好, 但是也不至于到这个程度, 从 api 的编写来看不应该这么低....大致意思是这个占用是最后一次屏幕刷新的时候, 进程 CPU 的占用....接着我们通过 pidstat, vmstat 发现压测过程中, 出现了大量的系统中断, 并通过 watch -d cat /proc/interrupts 发现主要的中断来自于重调度中断(RES) 通过...通过安装 redis 扩展, 以及使用 phpredis 来驱动 Laravel的 redis 缓存, 提升性能, 达到了又一次近 50% 的性能提升. 最终我们完成了我们的性能提升 104% 的目标

2.1K32
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel框架关键技术解析

Laravel框架中,在解析请求生成响应之前或之后需要经过中间件的处理,主要包括验证维护模式、Cookie加密、开启会话、CSRF保护等,而这些处理有些是在生成响应之前,有些是在生成响应之后 2.请求处理管道...中对于响应生成的三种形式 生成响应主体内容部分 生成响应的首部和主体部分 生成重定向的响应,即包含响应的重定向首部 2.生成响应的主体内容:return “字符串”或return view(‘xxx...//创建,第一次要composer down-autoload一下 php artisan db:seed [—class=类名] B.查询构造器 1.Laravel框架的查询构造器是在PDO扩展基础上设计的一个...十二、会话 A.Laravel框架中的session机制 1.当客户端访问服务器时,服务器将开启session,检测请求的Cookie中是否携带sessionID,如果携带则使用该sessionID,...NULL,这些类型的驱动 A.同步类型消息队列:消息 1.消息发送 生成消息类:php artisan make:job QueuedTest —queued Laravel中通过不同的Job类实现消息的封装

11.9K20

mysqldump与innobackupex备份过程你知多少(完结篇)

都是系统调用,看起来比较费劲),对于备份过程中的日志输出,这里就不再熬述,详见上文中的"全备流程图",本小节我们介绍general_log中的输出重点语句,如下: FLUSH NO_WRITE_TO_BINLOG...LOGS,该语句在mysqldump备份过程中没有 * 这句的作用是在所有的事务表和非事务表备份完成,获取了全局读锁,且使用SHOW MASTER STATUS语句获取了binlog pos之后,执行刷新...从上文中介绍的innobackupex的备份流程和原理上,我们可以得知,innobackupex工具备份过程中是不会出现前面提到的mysqldump备份工具的"坑一"的。...FLUSH TABLES和FLUSH TABLES WITH READ LOCK语句的时候,提到过三个注意事项,innobackupex备份过程中为了获得一个一致性备份,仍然会使用这两个语句对数据库进行刷新表缓存...除了寻找适合自己的,可行的备份方案之外,更应该做好备份校验(备份是否成功完成、备份文件是否损坏)、备份恢复演练(备份文件是否可以正常恢复数据),以备不时之需。

1.7K80

Laravel学习教程之广播模块详解

前言 本文主要给大家介绍了关于Laravel广播模块的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 注意:本文是基于Laravel 5.4版本的路由模块代码进行分析书写; 简介...广播是指发送方发送一条消息,订阅频道的各个接收方都能及时收到消息;比如 A同学写了一篇文章,这时候 B同学在文章底下评论了,A同学在页面上是不用刷新就能收到提示有文章被评论了,这个本质上就是A同学收到了广播消息...聊天 聊天信息的实时显示 模块组成 Demo 日志驱动 配置 .env文件修改或添加一行:BROADCAST_DRIVER=log; 广播 直接调用 $manager = app(IlluminateBroadcastingBroadcastManager...function handle(Login $event){ Log::info('Do UserLogin Listener: I was Login/【一个开发人员,能懂服务器量好,反之一个服务器维护人员,也应该懂开发...官网注册用户信息,获取属于自已的一套密钥信息,修改.env的配置文件; BROADCAST_DRIVER=pusher PUSHER_APP_ID/【本文中一些MYSQL版本可能是以前的,MYSQL建议使用5.7

1.5K50

MLOG_CHECKPOINT缺失下紧急数据恢复

这里需要强调的一点就是MLOG_CHECKPOINT在每个checkpoint点中最多只存在一次,如果出现多次MLOG_CHECKPOINT类型的日志,则说明Redo已经损坏,InnoDB会报错。...MySQL 5.7在进行恢复的时候,一般情况下需要进行最多3次的Redo log扫描: 第一次Redo log的扫描,主要是查找MLOG_CHECKPOINT,不进行Redo log的解析,如果没有找到...请注意:假如一次导出多个数据库(使用选项–databases或者–all-databases),将会逐个数据库刷新日志。除使用–lock-all-tables或者–master-data外。...在这种情况下,日志将会被刷新一次,相应的所有表同时被锁定。因此,如果打算同时导出和刷新日志应该使用–lock-all-tables 或者–master-data 和–flush-logs。...为了正确恢复,该选项应该用于导出MySQL数据库和依赖MySQL数据库数据的任何时候。

1.3K10

基于 Pusher 驱动的 Laravel 事件广播(上)

(三) 实时数据可视化如在dashboard数据面板中实时显示投票数,或者实时显示天气情况等等。 (四) 聊天 聊天信息的实时显示,如微信。等等。具体可看Pusher Use Cases 2....作者在个人环境中,输入http://laravelpusher.app:8888/bridge,在storage/logs/laravel.log中会出现类似如下的调试信息,可以先清空下laravel.log...如果输入路由http://laravelpusher.app:8888/broadcast则laravel.log中不打印调试消息,说明这个调试针对Laravel Pusher Bridge方式。...,那客户端打印的数据应该是'I Love China!!!',看看是不是。...可以多次刷新路由,在两个标签页面间切换看看打印的数据。A页面触发事件B页面能接收到数据;B页面触发事件A页面接收到数据。

2.9K31

Laravel API 开发推荐阅读清单

API 文档神器 Swagger 介绍及在 PHP 项目中使用 - API 文档撰写方案 推荐 Laravel API 项目必须使用的 8 个扩展包 使用 Jwt-Auth 实现 API 用户认证以及无痛刷新访问令牌...理解 HTTP 幂等性 讲得很清楚,推荐 浅析远程过程调用 RPC 告诉你什么是 RPC httpstatuses 一眼看完所有常用的 HTTP 状态码,还可以看详细含义 json-api 对 API 应该如何利用好...JSON 的一些建议 介绍 JSON 无论如何都应该读一遍 decision-graph.svg 一张大图展示整个 REST API 的验证过程,及各种状态码出现的时机 现成 API 例子 Github...调试工具 DHC (aka Dev HTTP Client) Chrome 插件,简单易用,可分类管理,界面友好 Fiddler2 Windows 下抓包必备,捕捉每一次 REST 请求和响应的详细内容...— 发布、修改、删除、列表; 话题回复接口 —— 发布、修改、删除、列表; 权限控制 —— 权限列表,角色列表; 资源推荐接口、活跃用户接口; 接口本地化处理; API 接口错误代码机制; APNS 消息推送服务器端介绍及实现

4.2K70

Fiddler 极速上手

以上步骤没问题的话,随便打开一个网页,应该就能在 Fiddler 中捕获到移动端的请求会话了。...过滤器 (Filters) 上面的步骤中,随便打开一个网页,你可能会看见一堆会话,包括一些其他应用的消息推送,状态同步等待后台网络请求也会显示会话中,这时就需要过滤掉无用的会话,如下设置后就只显示来自...简单使用场景 开发中我们可能会经常遇到这种情况,比如测试登录模块,数据解析调试等场景时,需要多次频繁的请求服务器返回各式各样的数据,可能需要不完整的、有错误的返回结果测试应用的健壮性,需要不同的网络环境来模拟户外使用的场景...下拉刷新一下数据,可以看到 Fiddler 中捕获到的会话及返回的天气数据 ? 保存返回数据 ? 编辑刚刚保存的 Json 数据,这个 Json 编辑工具不错 ?...再次下拉刷新天气信息,就从文本中返回如下数据了 ?

92030

微信小程序开发学习笔记(二)——小程序框架、组件、WXML

会话消息卡片标题,open-type="contact"时有效 1.5.0 send-message-path string 当前分享路径 否 会话消息卡片点击跳转小程序路径,open-type...string 否 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 1.9.5 show-message-card boolean false 否 是否显示会话消息卡片...,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效 1.5.0 bindgetuserinfo...,如果用户在会话中点击消息卡片后返回小程序,可以从 bindcontact 回调中获得具体信息,具体说明 (*小程序插件中不能使用*) 1.1.0 share 触发用户转发,使用前建议先阅读使用指引...也就是说,可以完整地将图片显示出来。 aspectFill 缩放模式,保持纵横比缩放图片,保证图片的短边能完全显示出来。

1.9K40

MyBatis 缓存(5)

在同一个会话里,多次执行相同SQL语句,会直接从内存取到缓存的结果,不要再发送SQL到数据库。但在不同的会话里,即使执行的SQL一样,也不能使用一级缓存(因为跨了Session)。 ?...要夸会话共享的话,SqlSession本身和它里面的BaseExecutor已经满足不了需求了,那我们应该在BaseExecutor之外创建一个对象。 但是二级缓存是不一定开启的。...--自动刷新时间ms,未配置时只有调用时刷新--> readOnly="false"<!...如果多个namespace中针对同一个表的操作,比如User表,如果在一个namespace中刷新了缓存,另一个namespace中没有刷新,就会出现脏数据的情况。...所以,推荐在一个Mapper里操作单表的情况使用。 如果让多个namespace共享一个二级缓存,应该怎么做?

48620

通过 PHP 代码发送 HTTP 响应与文件下载

比如我们通过 echo 设置响应实体,然后在浏览器中访问 http://localhost:9000/response.php 访问这个脚本,在 Chrome 扩展台中可以看到响应状态码正是 200,...默认情况下状态码是 302,表示临时重定向,你也可以显示设置这个状态码: header('HTTP/1.1 302 Found'); header('Location: https://xueyuanjun.com...刷新页面重试,如果认证成功,则返回如下提示信息: ?...在浏览器中访问 http://localhost:9000/response.php,会弹出一个下载会话框: ? 点击右下角「存储」按钮保存,即可开始下载该文件。Windows 下也是类似: ?...请求和响应部分我们就简单介绍到这里,由于 HTTP 协议本身是无状态的,而在某些场景中我们希望 HTTP 请求能够「记住」用户状态,比如实现用户认证、记住记录登录状态、电商网站中加入购物车到下单支付,这些都涉及到多次请求

4.5K20

RuntimeException: Unable to boot ApiServiceProvider, configure an API domain or prefix 解决办法和原因所在

php laravel 背景描述 项目使用的是laravel5.3,公司新招了个学妹写前端,于是我觉得应该改变一下项目结构,我负责写api,她渲染界面,使用ajax动态无刷新,前后端分离。...; 再次刷新就正常,周而复始。...我是一个刨根问底的人,在我的不懈努力下发现,原来这是php ts 版本会出现的问题。 原因所在 这其实是php的一个已知问题(只是对于我来说是未知 :p) 问题仅仅出现在php ts版本中。...正常等待5s结果: 在第一次请求没有结束之前立刻再次请求的结果: ok,这就是为什么在学妹本地环境中访问我的接口,会报错的原因,就是因为他ts版本的php没有找到env对应的值。...解决办法 了解了原因,解决办法多做多样,这里我说明一下我(laravel)开发的解决办法。

42830

Laravel Ignition 功能全解析

Symfony 的错误页面稍微好一些,它向您显示堆栈跟踪,但是没有多大帮助。 ? 下面的截图是 Whoops,这是 Laravel 5 中的标准。...它比默认的 Symfony 好得多,可以显示堆栈跟踪和一些关于请求的信息。尽管在 Laravel 中 Whoops 是默认值,但它是一个框架无关的(错误收集展示)。它仅仅显示通用信息。 ?...如果视图中有错误,这就是 whoops 显示它们的方式。注意,异常消息不适合分配的空间。你必须(鼠标)悬停在它上面才能看完整(信息)。在堆栈跟踪中,您可以看到使用了编译后的 Blade 视图和内容。...顶部还有足够的空间显示整个异常页面,不需要额外的单击。我们也在默认情况下显示应用程序帧,因为这些可能是您感兴趣的帧。 ?...我们只会在您安装了 Laravel Telescope(第一方调试助手) 的情况下显示。如果你点击那个链接,你将被带到望远镜内发生错误的异常。

3.1K40

记住微信这个特殊功能,关键时刻将派上大用场

前些天,我的iPhone出现了卡顿现象,在使用微信时,总提示存储空间不够,必须清理。...我的手机日益卡顿,我已尝试方法3多次,之后开始多次尝试方法2,即使用微信的“清理微信存储空间”。这个方法一般没什么问题,最多好基友之前给你发的小视频看不到了而已。...我自己摸索到几个办法: 通讯录中点击某个用户头像之后,聊天记录还在,会话将会恢复; 给一个人发消息之后,会话将会恢复。...因此,可以类似于一些人群发微信消息给所有人清理通讯录那样,来激活所有人的会话,不过我不能用自己一直鄙视的行为来骚扰大家,直接不考虑; 对iOS备份直接恢复,微信聊天记录和会话状态,将会回到备份的状态,可是我没有备份习惯...3、进入之后就可对微信消息、通信录、朋友圈、会话诸多功能进行修复了… ?

1.4K70

Linux 命令(89)—— less 命令

-k 选项可以出现多次 -K, --quit-on-intr 使 less 遇到 SIGINT 信号(Ctrl + C)时以状态码 2 立即退出 -L, --no-lessopen 忽略环境变量 LESSOPEN...可以使用 -z 选项指定 N 的大小,生效多次;也可以在键入前输入数值 N,生效一次 z 类似于 SPACE。...N,生效一次 w 类似于 ESC-v。...键入前可先输入数值 N,对当前与后续的 LEFTARROW 命令均有效,生效多次 r, ^R, ^L 刷新屏幕 R 刷新屏幕,放弃缓存内容。在文件被修改时有用 F 向前滚动,即使到达了文章尾部。...N 应该在 0 到 100 之间,可能包含一个小数点 P 跳转到文件中字节偏移为 N 所在的行 { 如果屏幕的顶行出现左花括号,{ 命令将转到匹配的右花括号。匹配的右花括号将位于屏幕的末行。

4.3K30
领券