长连接

PHP数据库长连接mysql_pconnect的细节

人盡茶涼 提交于 2019-11-30 06:10:05
PHP的MySQL持久化连接,美好的目标,却拥有糟糕的口碑,往往令人敬而远之。这到底是为啥么。近距离观察后发现,这家伙也不容易啊,要看Apache的脸色,还得听MySQL指挥。 对于作为Apache模块运行的PHP来说,要实现MySQL持久化连接,首先得取决于Apache这个web服务器是否支持Keep-Alive。 Keep-Alive Keep-Alive是什么东西?它是http协议的一部分,让我们复习一下没有Keep-Alive的http请求,从客户在浏览器输入一个有效url地址开始,浏览器就会利用socket向url对应的web服务器发送一条TCP请求,这个请求成功一次就得需要来回握三次手才能确定,成功以后,浏览器利用socket TCP连接资源向web服务器请求http协议,发送以后就等着web服务器把http返回头和body发送回来,发回来后浏览器关闭socket连接,然后做http返回头和body的解析工作,最后呈现在浏览器上的就是漂亮的页面了。这里面有什么问题呢?TCP连接需要三次握手,也就是来回请求三次方能确定一个TCP请求是否成功,然后TCP关闭呢?来回需要4次请求才能完成!每次http请求就3次握手,4次拜拜,这来来回回的不嫌累啊,多少时间和资源都被浪费在socket连接关闭上了,能不能一次socket TCP连接发送多次http请求呢?于是Keep

01.Nginx基础Http原理

╄→尐↘猪︶ㄣ 提交于 2019-11-29 22:00:59
1.Http协议概述 HTTP 全称 HyperText Transfer Protocol 中文名为超文本传输协议 1.什么是超文本? 包含有超链接(Link)和各种多媒体元素标记的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用 URL 表示。最常见的超文本格式是超文本标记语言HTML。 html文件->包含各种各样的元素(URL链接)->形成web page简称web页面。 2.那什么是 URL ,URL简称统一资源定位符。那URL的组成部分是由协议, 域名:端口, 路径和文件名 3.那超文本传输 http 协议是什么? 是一种按照 URL 指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。 2.Http工作原理 3.Http协议版本 http1.0协议使用的是短连接:建立一次tcp的连接,发起一次http的请求,结束,tcp断开。 http1.1协议使用的是长连接:建立一次tcp的连接,发起多次http的请求,结束,tcp端口。 3.Http请求响应 1. http 请求报文的方法 get # 获得请求文件信息的数据内容(下载) post # 用户提交数据至服务器端存储(上传) Request URL:http://10.0.0.7/index.html #

为什么使用HTTP2?

守給你的承諾、 提交于 2019-11-29 19:37:47
最近我们公司的官网由原来的http1.1已升级到http2,而我们前端开发对http2还是一片懵懂,更不知道为何换成了这个,故此补充了下http2的相关知识。 http1.1相比于http1.0有哪些优势? 缓存处理 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准, HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。 带宽优化及网络连接的使用 HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。 错误通知的管理 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。 Host头处理 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)

HTTP协议

ⅰ亾dé卋堺 提交于 2019-11-29 12:36:22
1.什么是url? 1.1 URL是统一资源定位符,表示的是一个资源,(图片 文字 视频 音频 等等) 单个资源介绍--图片 那URL的组成部分是由协议, 域名:端口, 路径和文件名 1.2 url组成部分: http:// www.yinwucheng.com:80 /public/tt.jpeg 协议 主机名称|域名 端口 文件的路径 协议: http https 域名: www.yinwucheng.com 端口: 80 443 路径: /public/tt.jpeg ---> Uri 查询: key=value 2.什么是html? Html简称Web Page,只不过一个完整的Html页面可能会包含很多个URL的资源。 (反之: 我们也可以理解一个HTML文件是由多个不同的URL资源拼接而成的。) 3.什么是http? HTTP协议就是将用户请求的HTML页面从一台Web服务器传输到客户端浏览器的一种协议。 Web 上进行数据交换的基础。 4.url html http 之间的关系 一个完整的HTML页面是由N多个Url地址资源组成的,而Http协议是用来传输这种Html文件的。 5.http的工作原理 6.当用户在浏览器输入域名后,会发生哪些操作? dns tcp http 用户-->app cache --> dns --> tcp --> http request

电商抢购秒杀系统的设计_1_应用场景分析

让人想犯罪 __ 提交于 2019-11-29 08:34:56
电商抢购秒杀系统的设计_1_应用场景分析 概述 所谓知已知彼,百战不殆,在开始详细介绍实战中的抢购秒杀系统时,我们了解一些抢购秒杀系统系统面临的尴尬与难点。另外需要说明一点,下面的内容都是在工作中慢慢总结得来,我们团队也是慢慢摸着石头过河,甚至最初的的架构设计并非是抢购秒杀系统。 评估系统处理能力 理论基础: LNMP的并发考虑与资源分配 虽然有基础去评估我们应用系统的处理能力,但是电商购买的业务流程挺复杂,从登录,商品详情,购物车,填写收货地址,选择支付方式,创建订单,完成支付,以及隐含的定时服务,限购策略,库存操作,排队机制等一系列的业务逻辑,每个请求的处理时间都不一样。那么根据木桶原理,一只水桶能将多少水取决于它最短的那块木板,分析整个业务流程中最耗系统资源的请求,以此为标准为评估系统处理能力。 场景 我们是一个做特卖秒杀抢购的电商平台,我们的商品异常火爆且价格低廉价,这就给网络黄牛带了巨大的利润空间。为了让真正的平台用户受益,改善用户体验,提高用户留存率,我们在产品业务、技术实现上尝试了很多方法,都没有完美解决黄牛刷单的问题。 目标 话说回来,让黄牛买不到商品,不是单纯技术能够解决的问题。我们要解决的问题是,由于黄牛大规模的请求登录接口、商品详情页接口、下单接口导致在抢购开始前后的流量峰值直接翻了上千倍,最终导致服务不可用。在不增加硬件成本的情况下

美团张志桐:美团 HTTP 服务治理实践

核能气质少年 提交于 2019-11-29 07:25:55
2019 年 7 月 6 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·上海站,美团基础架构部技术专家张志桐在活动上做了《美团 HTTP 服务治理实践》的分享。 OpenResty x Open Talk 全国巡回沙龙是由 OpenResty 社区、又拍云发起,邀请业内资深的 OpenResty 技术专家,分享 OpenResty 实战经验,增进 OpenResty 使用者的交流与学习,推动 OpenResty 开源项目的发展。活动将陆续在深圳、北京、武汉、上海、成都、广州、杭州等城市巡回举办。 首先做下自我介绍,我叫张志桐,毕业于哈尔滨工业大学,2015 年加入美团,目前在美团主要负责 Oceanus 七层负载均衡网关、Mtrace 分布式链路跟踪系统以及 KMS 密钥管理服务等。 美团是 Nginx 的老用户,从创业初期就使用 Nginx,直到 2013 年迁到了阿里的 Tengine,再到今年三四月份,全站服务迁到了 OpenResty 上。从 Tengine 迁到 OpenResty 最根本的原因是升级困难,随着 Nginx 的版本迭代越来越快,导致 Tengine 很难合到官方 Nginx 最新版本上,但是使用 OpenResty 可以平滑地升级整个 Nginx 的社区版本。 Oceanus 美团七层负载均衡网关

使用mysql的长连接

こ雲淡風輕ζ 提交于 2019-11-29 06:51:23
使用mysql的长连接 有个资料看得我云里雾里的。现在用自己的言语来总结一下,写文字,能够加深自己的理解。也会在写的过程中帮助自己发现理解方面瑕疵,继续查资料求证。 短链接的缺点:创建一个连接,程序执行完毕后,就会自动断掉与mysqlserver的链接。于是多少次php执行,就会多少次这样的创建和释放过程。频繁地创建和释放连接,比较耗费cpu资源。 长连接就可以避免每次请求都创建连接的开销,节省了时间和IO消耗。 长连接是提高了性能。不过还有一些细节的问题需要解决,即mysql发现一个链接长时间没有执行查询请求,就会自动断掉这个连接。 具体多长时间后断掉,有个timeout设置时间。通过sql:"show global variables like '%timeout';" 查看。 my.conf中的 wait_timeout=2880000 interactive_timeout = 2880000 当链接已经失效了,仍然去执行查询操作,一个明显的表现形式就是提示:MySQL server has gone away 启发:MySQL server has gone away这个信息是mysql服务器提示出来的呢?还是php的mysql扩展提示出来的呢? 据判断,肯定是应用程序服务器报出来的(php)。想一想,如果mysql都已经接到请求了,那么还出现什么链接不上

《即时消息技术剖析与实战》学习笔记3——IM系统如何保证消息的实时性

谁说胖子不能爱 提交于 2019-11-29 05:10:20
IM 技术经历过几次迭代升级,如图所示: 从简单、低效的短轮询逐步升级到相对效率可控的长轮询; 全双工的 Websocket 彻底解决了服务端的推送问题; 基于 TCP 长连接衍生的 IM 协议,能够实现服务端的主动推送。 一、基于HTTP协议的短轮询与长连接 二、基于单个TCP连接的双全工通信协议的 Websocket 客户端和服务端只需要完成一次握手,就可以创建持久的长连接,并进行随时、双向的数据传输。 当服务端收到新消息时,可以通过建立的 Websocket 连接,直接进行推送,真正做到“边缘触发”,保证消息的实时性。 优点: 1.支持服务端推送的双向通信,大幅降低服务端轮询压力; 2.数据交互的控制开销低,降低双方通信的网络开销; 3.Web 原生支持,实现相对简单。 三、基于TCP长连接衍生的 IM 协议 在 IM 领域,除了 Websocket 协议,还有 XMPP、MQTT 等通信协议,这些是基于 TCP 长连接衍生的私有协议。 这些私有协议,在用户上线连接时,在服务端维护好连接到服务器的用户设备和具体 TCP 连接的映射关系,并且一旦建立起长连接,就一直存在,除非网络被中断。这样,客户端能随时找到服务端,服务端也能通过这个映射关系随时找到对应在线的用户的客户端。 来源: https://www.cnblogs.com/sunshineliulu/p/11450664

Laravel如何优雅的使用Swoole

梦想的初衷 提交于 2019-11-29 01:10:39
原文地址: https://www.cnblogs.com/matoo/p/5569690.html 背景 正在做一个智能家居的项目(钱低的吓死人怎么办),接收下位机(就是控制智能家居硬件模块的HUB)协议解析,Web端维护硬件状态,利用APP交互。由于下位机数据是发送到服务器的XXX端口,所以必须对XXX端口进行监听。其实和聊天室的概念差不多,研究了一下workerman、swoole和其他几个开源的项目,决定采用swoole。 关于php解析下位机的16进制协议,其实相当之扯蛋,要是你最好还是用.NET或者JAVA吧。很久没碰MVC了,光是为解析协议写webservice觉得钱又太TM低了,哈哈哈,所以直接上PHP吧。网上搜搜还没见几个php这样搞的项目,我还没做完,做完了来谈谈,关键函数主要是bin2hex/pack/unpack。这一篇主要聊聊Laravel如何优雅的使用Swoole,其实只需简单3步就可以完成。 什么是Swoole 直接套用 Swoole官网 的介绍:PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端

Laravel如何优雅的使用Swoole

我怕爱的太早我们不能终老 提交于 2019-11-29 01:10:16
背景 正在做一个智能家居的项目(钱低的吓死人怎么办),接收下位机(就是控制智能家居硬件模块的HUB)协议解析,Web端维护硬件状态,利用APP交互。由于下位机数据是发送到服务器的XXX端口,所以必须对XXX端口进行监听。其实和聊天室的概念差不多,研究了一下workerman、swoole和其他几个开源的项目,决定采用swoole。 关于php解析下位机的16进制协议,其实相当之扯蛋,要是你最好还是用.NET或者JAVA吧。很久没碰MVC了,光是为解析协议写webservice觉得钱又太TM低了,哈哈哈,所以直接上PHP吧。网上搜搜还没见几个php这样搞的项目,我还没做完,做完了来谈谈,关键函数主要是bin2hex/pack/unpack。这一篇主要聊聊Laravel如何优雅的使用Swoole,其实只需简单3步就可以完成。 什么是Swoole 直接套用 Swoole官网 的介绍:PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。 Swoole官网的文档不够丰富啊,这比较头疼,但大部分的问题都解释了