05 2018 档案
摘要:1.对象的数据结构非常简单 handle: 一次request期间对象的编号,每个对象都有一个唯一的编号,与创建先后顺序有关,主要在垃圾回收时用 ce: 所属类的zend_class_entry handlers: 这个保存的对象相关操作的一些函数指针,比如成员属性的读写、成员方法的获取、对象的销毁
阅读全文
摘要:1.PHP中类编译阶段的产物,而对象是运行时产生的,它们归属于不同阶段。一个类可以包含有属于自己的常量、变量(称为“属性”)以及函数(称为“方法”)。 2.首先我们看下类的数据结构: create_object为实例化对象的操作,可以通过扩展自定义一个函数来接管实例化对象的操作,没有定义这个函数的话
阅读全文
摘要:1. Zend引擎主要包含两个核心部分:编译、执行: 执行阶段主要用到的数据结构: opcode: php代码编译产生的zend虚拟机可识别的指令,php7有173个opcode,定义在 zend_vm_opcodes.hPHP中的所有语法实现都是由这些opcode组成的。 zend_op_arra
阅读全文
摘要:1.函数 汇编中函数对应的是一组独立的汇编指令,然后通过call指令实现函数的调用。PHP编译的opcode数组,与汇编指令对应。 PHP用户自定义函数的实现就是将函数编译为独立的opcode数组,调用时分配独立的执行栈依次执行opcode,所以自定义函数对于zend而言并没有什么特别之处,只是将o
阅读全文
摘要:1.php是解析型的高级语言,zend内核使用c语言实现,有main函数,php脚本就是输入,内核处理后输出结果,内核将php脚本翻译成c程序可识别的opcode就是php的编译。 c语言的编译将c代码编译成机器码,这些机器码就是操作指令,将指令写入二进制程序load相应的内存区(常量区 数据区 代
阅读全文
摘要:1.静态变量的结构 php脚本编译之后会生成执行opcode组成的opcode_array,执行每个zend_op_array都会生成一个单独的zend_execute_data结构。 php的局部变量分配在zend_execute_data结构上,生命周期在opcoe_array执行开始分配,执行
阅读全文
摘要:1.php的常量 就是一个简单的标识符,脚本执行期间不会改变,大小写敏感,默认大写。 常量的存储结构 flag代表的含义 : CONST_CS: 大小写敏感 CONST_PERSISTENT: 持久化的(只有通过扩展、内核定义的才支持,这种常量不会在request结束时清理掉) CONST_CT_S
阅读全文
摘要:zval结构比较简单,内嵌一个union类型的zend_value保存具体变量类型的值或指针,zval中还有两个union:u1、u2: u1: 它的意义比较直观,变量的类型就通过u1.v.type区分,另外一个值type_flags为类型掩码,在变量的内存管理、gc机制中会用到,第三部分会详细分析
阅读全文
摘要:memached是高性能分布式内存对象系统,通过在内存中存储数据对象来减少对磁盘的数据读取次数,提高服务速度。 从业务需求出发。我们通过一条命令(如set)将一条键值对(key,value)插入memcached后,需要: 1、对该键值数据的高效索引; (memcached通过哈希表来对键值数据进行
阅读全文
摘要:在前几年,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式, 但是现在参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了。但是历史同样悠久的 XSS 和 CSRF 却任然存在。 XSS 全称“跨站脚本”,是注入攻击的一种。 其特点是不对服务
阅读全文
摘要:PHP站点开发过程中,因为搜索引擎对PHP页面搜鹿和html页面的收录有一定的区别,为了站点的推广或者SEO的须要,要对站点进行一定的静态化。静态化并非页面中没有动画等元素,而是指网页的html代码都在页面中,不须要再去执行PHP脚本等server端的语言,我们能够直接訪问到的网页。这就是静态网页。
阅读全文
摘要:适配器的使用将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作,主要应用在第三方api的适配和多个类库的选择适配到我们的应用的接口规则。 例子
阅读全文
摘要:进程 为了帮助大家理解什么是进程,以厨师做蛋糕为例。厨师做蛋糕,首先需要厨师(CPU),其次,需要食谱(程序)和原料(输入数据),而用原料做蛋糕的一些列动作的总和就是进程。某天厨师正在后厨做着蛋糕,突来听到儿子哭着跑进后厨,说自己被蜜蜂蛰了 ,厨师放下手中工具,并记录下当前做到哪一步了(保存上下文信
阅读全文
摘要:互联网刚诞生的时候没有安全的概念,伴随着Hacker的但是,互联网变得越来越不安全,Hacker分为白帽子和黑帽子,非Web服务器越来越少的暴露在互联网上,现在的互联网安全主要指的是Web安全。 既然要讲Web安全,首先介绍什么是安全,安全的本质是什么?引用《白帽子讲安全》里对安全的定义:安全问题的
阅读全文
摘要:一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性
阅读全文
摘要:nginx和fastcgi的通信方式有两种,一种是TCP 一种是unix socket TCP使用的是 127.0.0.1:9000端口,将fastcgi_pass参数修改为127.0.0.1:9000 unix socket 使用套接字 /dev/shm/php-cgi.sock,两个进程引用同一
阅读全文
摘要:1.php最常见的五种运行模式。 CGI 通用网关接口 FastCGI 常驻内存的CGI CLI 命令行 Web模块 Apache等Web服务器 模块的形式加载php进程 ISAPI 已经不用了 2.CGI Common Gataway Inteface 通用网关接口 网页请求和执行程序的连接桥梁,
阅读全文
摘要:简介 awk命令的名称是取自三位创始人Alfred Aho 、Peter Weinberger 和 Brian Kernighan姓名的首字母,awk有自己的程序设计语言,设计简短的程序,读入文件,数据排序,处理数据,生成报表等功能。 awk 通常用于文本处理和报表生成,最基本功能是在文件或者字符串
阅读全文
摘要:常见的网络IO模型5种 阻塞IO(blocking IO), 无阻塞IO(noblocking IO), IO多路复用(IO multiplexing),信号驱动 (signal driven IO),异步IO (asynchronous IO) 阻塞IO(blocking IO) 在linux中,
阅读全文
摘要:libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent
阅读全文
摘要:redis的数据结构对象包括 字符串 列表 哈希 集合 有序集合五种数据结构对象,由底层的8种数据结构组成这五种对象,每种对象的实现不同的数据都是不一样的。 结构 typedef struct redisObject{ unsigned type:4 ; unsigned encoding:4; v
阅读全文
摘要:1.动态字符串 redis中使用c语言的字符床存储字面量,默认字符串存储采用自己构建的简单动态字符串SDS(symple dynamic string) redis包含字符串的键值对都是用SDS实现的 结构s d s.h/sdshdr free属性值 0,表示SDS没有分配使用空间 len属性值 5
阅读全文
摘要:闭包是指在创建时封装周围状态的函数,即使闭包所在的环境的不存在了,闭包中封装的状态依然存在。 匿名函数其实就是没有名称的函数,匿名函数可以赋值给变量,还能像其他任何PHP函数对象那样传递。不过匿名函数仍然是函数,因此可以调用,还可以传入参数,适合作为函数或方法的回调。 php5.3加入了闭包的新特性
阅读全文
摘要:一致性hash算法是,1097麻省理工提出的分布式hashDHT实现算法,极倔internet的热点问题 平衡性 hash结果尽可能的分布到所有的缓存中去,缓冲空间利用率最高 单调性 保持已有的缓存能映射到对应的位置,新加入的缓存能加入新的位置不会映射到旧的位置 分散性 尽量降低分散性的缓存不一致情
阅读全文