
PHP7内核
文章平均质量分 83
ZSC_LM
这个作者很懒,什么都没留下…
展开
-
简述Times33散列函数
闲来无事,随手翻看《Redis5 设计与源码分析》的时候再次看到了哈希函数times33,想着之前在学习PHP源码的时候也看到过这个哈希函数,就想好好研究一下,但是查阅许久都没有找到满意的结果,以下内容部分摘自Laruence介绍PHP中的hash算法的博客,原文地址:http://www.laruence.com/2009/07/23/994.htmlPHP的Hash采用的是目前最为普遍...原创 2019-11-02 11:39:46 · 3478 阅读 · 0 评论 -
PHP7内核学习 - Fpm的master进程和worker进程
Fpm的master进程作为一种多进程的模型,Fpm由一个master进程加多个worker进程组成。当master进程启动时,会创建一个socket,但是他本身并不接收/处理请求。他会fork出子进程来完成请求的接收和处理。所以,master的主要职责是管理worker进程,比如fork出worker进程,或者kill掉worker进程。master进程并不直接与worker进程...原创 2019-10-05 15:06:42 · 6176 阅读 · 1 评论 -
PHP7内核学习笔记 - zval中的知识点
PHP5中的zval结构struct _zval_struct { union { long lval; double dval; struct { char *val; int len; } str; HashTable *ht; ze...原创 2019-10-05 14:50:06 · 256 阅读 · 0 评论 -
PHP7内核学习笔记 - 数组
理想状况下,无需任何比较就能找到待查关键字,查找的期望时间复杂度为O(1)PHP7散列表基本结构:// zend_array和HashTable的含义是相同的,没有任何区别typedef struct _zend_array zend_array;typedef struct _zend_array HashTable;struct _zend_array { zen...原创 2019-10-05 14:47:35 · 678 阅读 · 0 评论 -
关于原码、反码和补码的笔记
上来先敲黑板,说重点(重要的事情说三遍):计算机中以补码进行存储计算计算机中以补码进行存储计算计算机中以补码进行存储计算所以,一切的运算都要先得到数据的补码,不要上来就拿原码在那干,得到的结果会漫天飞舞,正负数一起算会算到你怀疑人生。。可以尝试将十进制数字的二进制打印出来看看,正数还算正常,负数的那玩意是什么鬼(e.g. -3=11111111111111111111111111...原创 2019-10-05 14:45:10 · 7100 阅读 · 0 评论 -
PHP7内核学习笔记 - 类的成员属性
属性可以在定义的时候初始化,但是必须是固定值,不可以是变量,也不可以依赖运行时信息。比如protected $time = time();就是不合法的。成员属性分为两类:静态和非静态(普通属性)。静态属性使用::进行访问,普通属性使用->进行访问。静态属性为各个对象共享的,与常量类似。而普通属性则是各个对象独享的。与常量存储方式不同,属性并非以属性名为索引存储在HashTabl...原创 2019-10-05 14:36:49 · 6618 阅读 · 0 评论 -
PHP7内核学习笔记 - 请求的生命周期
PHP的整个生命周期可以大致分为五个步骤:STEP1:模块初始化阶段(module init -> php_module_startup)STEP2:请求初始化阶段(request init -> php_request_startup)STEP3:脚本执行阶段(execute script -> php_execute_script)STEP4:请求关闭阶段(re...原创 2018-11-07 13:31:23 · 1364 阅读 · 0 评论 -
PHP7内核学习笔记
最近在业务处理时总感觉有不足的地方可以改进,但是又无从下手,所以打算开始学习PHP7的内核,准备大致分成数个模块推进,在此记录一下以提供学习的思路:SAPI、变量、字符串、数组、对象、编译、执行、函数、类、内存等,再往后应该还会学习扩展的编写(希望通过自己结合业务需求编写的扩展可以解决一些性能问题)。。PHP7相比于PHP5还是有很多的提升的,提升...原创 2018-11-02 09:45:37 · 323 阅读 · 0 评论 -
PHP7内核学习笔记 - 内核结构
根据个人的理解,PHP内核结构可以大体分成SAPI + main + Zend + Ext + TSRM其中SAPI是最外层的,其全称为Server abstraction API,它是PHP提供对外服务的规范,主要负责处理输入和输出。 它可以直接对接web服务器,如Apache、Nginx等,接收这种来自Web服务器的网络请求并返回相应的响应数据。而在cli运行方式下,它接收的则是命令...原创 2018-11-06 14:40:35 · 247 阅读 · 0 评论