随笔分类 -  # PHP7内核

摘要:闲来无事,随手翻看《Redis5 设计与源码分析》的时候再次看到了哈希函数times33,想着之前在学习PHP源码的时候也看到过这个哈希函数,就想好好研究一下,但是查阅许久都没有找到满意的结果,以下内容部分摘自Laruence介绍PHP中的hash算法的博客,原文地址:http://www.laru 阅读全文
posted @ 2019-11-02 11:39 寂地烟火 阅读(10) 评论(0) 推荐(0) 编辑
摘要:Fpm的master进程 作为一种多进程的模型,Fpm由一个master进程加多个worker进程组成。 当master进程启动时,会创建一个socket,但是他本身并不接收/处理请求。他会fork出子进程来完成请求的接收和处理。所以,master的主要职责是管理worker进程,比如fork出wo 阅读全文
posted @ 2019-10-05 15:06 寂地烟火 阅读(9) 评论(0) 推荐(0) 编辑
摘要:PHP5中的zval结构 struct _zval_struct { union { long lval; double dval; struct { char *val; int len; } str; HashTable *ht; zend_object_value obj; zend_ast 阅读全文
posted @ 2019-10-05 14:50 寂地烟火 阅读(6) 评论(0) 推荐(0) 编辑
摘要:理想状况下,无需任何比较就能找到待查关键字,查找的期望时间复杂度为O(1) PHP7散列表基本结构: // zend_array和HashTable的含义是相同的,没有任何区别 typedef struct _zend_array zend_array; typedef struct _zend_a 阅读全文
posted @ 2019-10-05 14:47 寂地烟火 阅读(5) 评论(0) 推荐(0) 编辑
摘要:上来先敲黑板,说重点(重要的事情说三遍): 计算机中以补码进行存储计算 计算机中以补码进行存储计算 计算机中以补码进行存储计算 所以,一切的运算都要先得到数据的补码,不要上来就拿原码在那干,得到的结果会漫天飞舞,正负数一起算会算到你怀疑人生。。可以尝试将十进制数字的二进制打印出来看看,正数还算正常, 阅读全文
posted @ 2019-10-05 14:45 寂地烟火 阅读(14) 评论(0) 推荐(0) 编辑
摘要:属性可以在定义的时候初始化,但是必须是固定值,不可以是变量,也不可以依赖运行时信息。比如protected $time = time();就是不合法的。 成员属性分为两类:静态和非静态(普通属性)。静态属性使用::进行访问,普通属性使用->进行访问。静态属性为各个对象共享的,与常量类似。而普通属性则 阅读全文
posted @ 2019-10-05 14:36 寂地烟火 阅读(10) 评论(0) 推荐(0) 编辑
摘要:根据个人的理解,PHP内核结构可以大体分成SAPI + main + Zend + Ext + TSRM 其中SAPI是最外层的,其全称为Server abstraction API,它是PHP提供对外服务的规范,主要负责处理输入和输出。 它可以直接对接web服务器,如Apache、Nginx等,接 阅读全文
posted @ 2018-11-06 14:40 寂地烟火 阅读(5) 评论(0) 推荐(0) 编辑
摘要:最近在业务处理时总感觉有不足的地方可以改进,但是又无从下手,所以打算开始学习PHP7的内核,准备大致分成数个模块推进,在此记录一下以提供学习的思路:SAPI、变量、字符串、数组、对象、编译、执行、函数、类、内存等,再往后应该还会学习扩展的编写(希望通过自己结合业务需求编写的扩展可以解决一些性能问题) 阅读全文
posted @ 2018-11-02 09:45 寂地烟火 阅读(5) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示