
PHP源码研究
本兮言
“任何事情,没有坚持3个月,就没有发言权!没有坚持3年,就不能说自己懂!没有坚持7年,就不可能是专家!没有坚持10年以上,就不会拥有权威!没有坚持一辈子,就不可能有所成就!选择自己真正想做的事情,每天重复做,能坚持下来的人,定会成为某一领域的领航者。成功没有捷径,坚持才能成功!”
展开
-
PHP7新特性、运行模式和生命周期
1、PHP目录 PHP源码核心目录 Zend文件下,spai放在sapi的文件下,一些扩展的方法和库函数在ext文件下 编译的脚本是在configure目录下,接下来make进行编译,make install 会把相关的二进制文件拷贝到我指定的目录下 ./configure --prefix=/usr/tmp/php/php-7.1.0 --enable-fpm --...原创 2019-05-08 18:36:58 · 976 阅读 · 0 评论 -
php-fpm 三种运行模式
php-fpm配置配置文件:php-fpm.conf开启慢日志功能的:slowlog = /usr/local/var/log/php-fpm.log.slowrequest_slowlog_timeout = 5s当某个请求的时间超过了5秒,就会在慢日志中记录相应的记录,注意上面的时间5s,不能忽略了单位,相应的还有其他单位,m分,h时php-fpm慢日志会记录下进程...原创 2019-05-15 15:46:44 · 748 阅读 · 0 评论 -
PHP7中数组(HashTable)类型
Hashtable 的概念:字符串的键先会被传递给一个 hash 函数(hashing function,中文也翻译为散列函数),然后这个函数会返回一个整数,而这个整数就是“通常”的数组的索引,通过这个数字索引可以访问到 字符串的键对应的数据。本质上PHP的数组是有序的字典,表示k-v对的是有序列表,其中k-v映射是使用hashTable实现的,PHP将字符串key通过哈希函数运算返...原创 2019-05-26 23:43:56 · 2994 阅读 · 2 评论 -
PHP源码分析(基本变量、垃圾回收)
小而巧的zval扩充:结构体: 比如 struct test { char a //1 int b//4 long c //8 } 总共占了2*8=16字节 因为结构体对齐,虽然浪费字节,但是得益于内存对齐,存取速度会更快联合体:比如 union{ c...原创 2019-05-30 11:29:50 · 1810 阅读 · 0 评论 -
PHP源码分析(内存管理)
void *ptr=_emalloc(size);_efree(*ptr) //释放内存的时候只传入ptr,并没有传入释放内存大小当我们申请一个size大小的内存的时候,我们多申请一些存起来,下次用户申请的时候,直接给出相应大小的内存即可,这样减少了用户态和内核态的切换,提高效率,内存回收的时候需要知道这个内存属于哪个内存页page,属于哪个chunk,以便回收chunk内存...原创 2019-05-30 11:31:34 · 614 阅读 · 0 评论