![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
站在风口的熊
git:https://github.com/barebear
email:1432649234@qq.com
欢迎交流
展开
-
自己动手写php扩展-类和接口
1.利用php-src提供的工具生成扩展的骨架sudo ./ext_skel.php --ext testclass2.添加类和接口的声明php_testclass.h中PHP_METHOD(TestClass, __construct);PHP_METHOD(TestClass, hello);3.php_testclass.c中static const zend...原创 2021-03-30 20:41:13 · 134 阅读 · 0 评论 -
php-fpm源码浅析
php-src/sapi/fpm/fpm/fpm.c关于fpm初始化关键代码 0 > fpm_php_init_main() || 0 > fpm_stdio_init_main() || 0 > fpm_conf_init_main(test_conf, force_daemon) || 0 &g...原创 2019-02-13 10:39:27 · 498 阅读 · 0 评论 -
php中ZTS
1.ZTS zend thread safety,php线程安全,适用于Apache2+worker MPM2.ts_allocate_id:allocates a new thread-safe-resource id;函数 TSRM_API ts_rsrc_id ts_allocate_id(ts_rsrc_id *rsrc_id, size_t size, ts_allocate_cto...原创 2018-12-16 17:39:15 · 2925 阅读 · 0 评论 -
fastcgi协议管窥
纪录的通用结构:typedef struct { unsigned char version; unsigned char type; unsigned char requestIdB1; unsigned char requestIdB0; unsigned char c...原创 2018-12-09 22:25:00 · 151 阅读 · 0 评论 -
gdb 调试 php-cp扩展 redisProxy与pool_server的长连接
1.安装gdb sudo apt-get install gdb2.进入php-cp扩展目录(已经编译过了),源码https://github.com/swoole/php-cp获取要调试函数的真实函数名 zim_redis_connect_pool_select$ nm connect_pool.so....0000000000012170 t zim_re...原创 2018-10-24 19:13:55 · 593 阅读 · 0 评论 -
php源码之DateTime类
1.声明在php_date.h/* Advanced Interface */PHP_METHOD(DateTime, __construct);PHP_METHOD(DateTime, __wakeup);PHP_METHOD(DateTime, __set_state);PHP_METHOD(DateTime, createFromImmutable);/*其他方法,以映射的方...原创 2018-09-21 18:44:32 · 394 阅读 · 0 评论 -
自己动手写php扩展
1.下载最新版php源码git clone https://github.com/php/php-src2.切换到ext目录cd php-srccd ext 3.利用php-src提供的工具生成扩展的骨架./ext_skel.php --ext test便可以在当前目录查看到test文件夹--扩展的文件夹./ext_skel.php具体怎么使用,可在当前目录输...原创 2018-09-20 23:33:49 · 507 阅读 · 0 评论 -
PHP源码之date函数
date函数的实现在源码目录的 ext/date。1.定义函数的参数表:ZEND_BEGIN_ARG_INFO_EX(arginfo_date, 0, 0, 1) ZEND_ARG_INFO(0, format) ZEND_ARG_INFO(0, timestamp)ZEND_END_ARG_INFO()将其展开,得到#define ZEND_ARG_INFO(pass_...原创 2018-09-13 19:15:34 · 532 阅读 · 0 评论 -
php 内核hashtable中 pListNext和pNext的区别
pListNext指示在php数组中加入的先后顺序pNext指在存储的同一个bucket(链表法解决冲突)中的链表先后位置,注意是头插法,所以越后加入的元素在同一bucket中的位置越靠前;...原创 2018-08-23 16:20:03 · 657 阅读 · 0 评论 -
php内核寻找ini的优先过程
php_init_config函数的作用是读取php.ini文件,设置配置参数,加载zend扩展并注册PHP扩展函数。此函数分为如下几步: 初始化参数配置表,调用当前模式下的ini初始化配置,比如CLI模式下,会做如下初始化:INI_DEFAULT("report_zend_debug", "0");INI_DEFAULT("display_errors", "1");不过在其它模式下...原创 2018-08-23 16:32:37 · 329 阅读 · 0 评论