Loading

邢栋博客

包含关键词“php”的文章

php 的 yield 简单使用

// 文件的读取(一) function getLines($filename){ $f = fopen($filename,'rb'); try{ while ($line = fgets($f)) { yield $line; } }finally{ fclose($f); } } $lines = getLines('my.log'); for...

php安装vld扩展查看编译opcode

php安装vld扩展查看编译opcode wget http://pecl.php.net/get/vld-0.14.0.tgz tar -zxvf vld-0.14.0.tgz /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --enable-vld make && make install vim /usr/local/php/etc/php.ini ,在文件最后面加入 extension=vld.so serv...

php正则相关知识点笔记

正则 环视(零宽断言) 环视不匹配任何字符,只匹配文本中的特定位置。类似于\b,^,$那样。环视不会占用字符。 环视分为顺序和逆序两种。 顺序 (?=exp)位置的后面能匹配exp。例如(?=\d)当前位置右边是数字 (?!exp)位置的后面不能匹配exp。例如(?!\d)当前位置右边不是数字 逆序 (?<=exp)位置的前面能匹配exp。例如(?<=\d)当前位置左边是数字 (?<!exp)位置的前面不能匹配exp。例如(?<!\d)当前位置左边不是数字 (?=jeffrey)jeff 等价于 jeff(?rey) 例子 &...

php7下安装event扩展

1.先安装libevent wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz tar -zxvf libevent-2.1.8-stable.tar.gz cd libevent-2.1.8-stable ./configure --prefix=/usr/local/libevent-2.1.8 make make install 2.再安装event扩展 wget http://p...

php7内核读书笔记-第五章 php的编译与执行

php7内核读书笔记-第五章 php的编译与执行 opline指令-操作数类型 IS_CONST 常量,也称作字面量,比如$a=123,$a="hello",其中123,hello就是字面量 IS_CV 变量,比如$a=123,$b=3+$c,$a,$b,$c就是CV变量 IS_VAR PHP变量,比如$a=time(),time()的返回值就是IS_VAR类型 IS_TMPVAR 临时变量,或者中间变量 $a="hello".time(), "hello".time()就是临时变量 IS_...

php7内核读书笔记-第四章 内存管理

php7内核读书笔记-第四章 内存管理 引用计数 会使用引用计数机制的类型 type refcounted simple types string Y interned string N(内部字符串,request完成后统一销毁释放 $a="hi") array Y imutable array N(不可变数组) object Y resource Y reference Y 垃圾回收 ps:如果一个变量value的refcount减少到了0,那么此value可以被释放掉,不属于垃圾;如果一个变量value的refcount减少之后...

php7内核读书笔记-第二章 SAPI

php-fpm的worker进程和master进程 worker进程-处理请求 每个worker进程会竞争地Accept请求,接收成功后解析fastcgi,然后执行相应的脚本,处理完成后关闭请求,继续等待新的连接,这个就是一个worker进程的生命周期。 1.等待请求 2.解析请求 fastcgi请求到达后被worker接收,然后开始接收并解析请求数据,知道request数据完全到达 3.请求初始化 4.执行php脚本 5.关闭请求 master进程-管理进程 三种不同的进程管理模式 1.静态模式static 2.动态模式dynamic 默认 3.按需...

php7的生命周期

1.模块初始化阶段(module startup) 这个阶段主要进行php框架、zend引擎的初始化操作。该阶段的入口函数为php_module_startup(),这个阶段一般是在SAPI启动时执行一次,对于FPM而言,就是在fpm的master进行启动时执行的。 该阶段的几个主要处理如下所诉: 1.激活SAPI:sapi_activate(),初始化请求信息SG(request_info)、设置读取POST请求的handel等,在module_startup阶段处理完成后将调用sapi_activate() 2.启动php输出 php_output...

php7内核读书笔记-第一章 php基础架构

php7的变化 1.抽象语法树 2.Native TLS(线程局部存储) 使用Native TLS来保存线程的资源池,线程独享。 3.指定函数参数、返回值类型 4.zval结构的变化 php7将引用计数转移到了具体的value中。zval结构大小从24字节减少到了16字节 5.异常处理 6.HashTable变化 php中数组类型的内部实现结构。HashTable结构的大小从72字节减小到了56字节,数组元素Bucket结构也从72字节减小到了32字节 7.新的参数解析方式

创建一个简单的php7扩展

Php版本:7.0.0 首先进入php源码 ext 目录下 执行./ext_skel --extname=foobar //foobar为我要创建的扩展模块 执行完毕后 cd ext/foobar/ vim config.m4 16 dnl PHP_ARG_ENABLE(foobar, whether to enable foobar support, 17 dnl Make sure that the comment is aligned: 18 dn1 [ --enable-foobar Enable foobar sup...