近期在看鸟哥的博客的时候,发现自己对PHP内核方面还真是一窍不通,就以PHP变量来说,一直都知道PHP变量是写时复制,但是真的去分析这个变量的refcount和is_ref的时候,又是一脸懵逼,学习道路漫漫,戒骄戒躁。
PHP实现基于Swoole的MySQL连接池
对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配﹑释放所造成的问题。数据库连接池的基本思想就是为数据库连接建立一个“池”子,在使用的时候,从“池子”中获取资源,用完后将连接放回“池子”,减少了数据库连接建立与释放造成的损耗。
MyISAM与InnoDB性能测试对比
MyISAM与InnoDB的优缺点在此就不再多说了,网上可以搜出一堆,而这种文章的最后一般都是推荐,读的多的使用MyISAM,写与更新多的推荐InnoDB,但是,了解过两种存储引擎之后,就会产生一种疑惑,InnoDB采用的是聚簇索引,无论是索引还是数据都是存放在内存中的,MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址,找到了之后还要到硬盘上去获取数据,这样肯定会造成时间损耗的,所以,还是准备用实验数据来解决疑惑
Nginx倒腾笔记(七):Nginx限制访问频率
面对而已的DDOS攻击是一种很让人头疼的问题,其中CC攻击是DDOS的一种,也是一种常见的网站攻击方法,通过有限的IP不断的去请求对方服务器,造成对方服务器资源耗尽直至宕机。
而通过Nginx的HttpLimitReqModul和HttpLimitZoneModule 来限制同一IP在同一时间段内的访问次数来降低CC攻击带来的危害
HTTP协议:HTTP1.0、HTTP1.1、HTTP2.0对比
早在HTTP建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的web服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了WEB2.0以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的HTML页面有了CSS,Javascript,来丰富我们的页面展示,当ajax的出现,我们又多了一种向服务器端获取数据的方法,这些其实都是基于HTTP协议的。同样到了移动互联网时代,我们页面可以跑在手机端浏览器里面,但是和PC相比,手机端的网络情况更加复杂,这使得我们开始了不得不对HTTP进行深入理解并不断优化过程中。
免费SSL证书制作-Lets Encrypt
腾讯云一年的免费SSL证书到期了,在老大的推荐下看了一下Let's Encrypt
家的免费证书,虽然只有三个月,但是支持免费续期,而且支持通配符证书,这倒是很大的福利了
PHP性能分析工具xhgui+tideways实践
自从线上接口报内存溢出的问题后,就一直想搭建一个性能分析的平台,但后来一直没有时间,知道后来出现了接口调用时间过长,才将这个任务提上议程。
我同事先前所在的部门使用了xhprof
+ xhgui
的处理方式,但是研究后发现 xhprof
只支持到php5.6,无奈放弃了,同时,虽然 tideways
自己也提供了UI,但是炫酷的都是要收费的,综合考虑后,选用了 tideways
+ xhgui
的解决方案
git merge和git merge --no-ff的区别
在很多介绍GItFlow工作流的文章里面,都会推荐在合并分支的时候加上--no-ff
参数, 而我们在合并的时候,有时git也会提示 使用了 fast-forward, 这里我将介绍一下merge
的三种状态及 git merge
和 git merge --no-ff
的区别
php的垃圾回收机制
每个php变量存在一个叫”zval”的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是”is_ref”,是个bool值,用来标识这个变量是否是属于引用集合(reference set)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用。第二个额外字节是”refcount”,用以表示指向这个zval变量容器的变量(也称符号即symbol)个数。所有的符号存在一个符号表中,其中每个符号都有作用域(scope),那些主脚本(比如:通过浏览器请求的的脚本)和每个函数或者方法也都有作用域。