随笔分类 - PHP
摘要:在php5.3版本之前, php变量的回收机制只是简单的通过计数来处理(当refcount=0时,会回收内存),但这样会出现一个问题 $a=array("str"); $a[]=&$a; unset($a); 执行unset之前,$a的refcount 为2,执行unset之后,$a的refcout
阅读全文
摘要:protobuffer是google推出的一种数据传的方式,具体压缩,体积小的特点 protobuffer本身不支持php,若要把.proto文件转化为php支持的文件,需要使用第三方的程序 allegro/php-protobuf 或 drslump/Protobuf-PHP 参考 http://
阅读全文
摘要:php变量的引用,如果使用的恰当,会带来效率的提升,相反,效率下降 count是个内置函数,参数只接收传值,但现在传入的参数$array是个引用,由于在php5中,某个值是不能引用变量和非引用变量之间使用, 针对这个例子来说,即在count内部,php引擎会copy一个$arrray指向的zval,
阅读全文
摘要:gdb安装包 在CentOS6.4下使用gdb进行调试的时候, 使用bt(breaktrace)命令时,会弹出如下的提示: 头一天提示: Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.107.el6.i686 问题没
阅读全文
摘要:一.修改php-fpm.conf文件 /usr/local/php/etc/php-fpm.conf pm.max_children = 1 #只产生一个进程,便于追踪 二.得到进行服务的进程号 [root@default-tpl etc]# ps aux|grep php-fpmroot 1521
阅读全文
摘要:查看pid位置 cat /etc/php-fpm.confpid = /usr/local/php/var/run/php-fpm.pid #测试php-fpm配置/usr/local/php/sbin/php-fpm -t/usr/local/php/sbin/php-fpm -c /usr/lo
阅读全文
摘要:php内核中的内存分配 使用的函数有 emalloc(), erealloc() ,这两个函数分别是malloc(),realloc()函数的封装 关于内存分配有四个容器:cache,小块内存链表,大块内存(链表+树), 剩余rest内存链表 大块内存(链表+二叉排序树):链表中每个bucket除了
阅读全文
摘要:zend_class_entry typedef struct _zend_property_info { zend_uint flags; char *name; int name_length; ulong h; char *doc_comment; int doc_comment_len; z
阅读全文
摘要:程序 1.BNF 范式 获取class_name,并生成opcode ZEND_FETCH_CLASS 执行 ZEND_FETCH_CLASS 理解版 //#define EX_T(offset) (*EX_TMP_VAR(execute_data, offset)) //#define EX_TM
阅读全文
摘要:static union _zend_function *zend_std_get_method(zval **object_ptr, char *method_name, int method_len, const zend_literal *key TSRMLS_DC) /* {{{ */ { zend_function *fbc; zval *object = *objec...
阅读全文
摘要:0.php代码 1.BNF范式(语法规则) 2.生成opcode 3.执行opcode 执行$a.$b时,执行concat_function,第一个参数为一个临时变量(类型为zval), 执行函数后,这个临时变量即保存了concat后的字符串的首地址,然后这个临时变量会放到yyvsp这个数组里,当再
阅读全文
摘要:结论: 一 编译 a.对 函数声明进行词法分析和语法分析:在语法分析中的函数zend_do_begin_function_declaration 作用是: 初始化zend_op_array,填充 function_name ,line_start ,设定相应opcode:ZEND_DECLARE_F
阅读全文
摘要:php的语法分析的主要作用是验证词法分析的基础上将token组成的序列,在php这门语言中是否是一个有效的句子,也可以理解为这些token序列是否匹配设计php这门语言时的语法模型,在匹配的情况下构建具体的程序(组建opcode),以供编译后期使用。 比如:在设计php语言时,需要设计一套语法...
阅读全文
摘要:#include #include int main(){ union test { int a; int b; }t1; t1.b=2; printf("t1 value is %p\n",t1); printf("a value ...
阅读全文
摘要:注:C语言实现的PHP变量的赋值过程中,就涉及到了 深拷贝和浅拷贝 位拷贝拷贝的是地址(也叫浅拷贝),而值拷贝则拷贝的是内容(深拷贝)。深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。 ...
阅读全文
摘要:op2.var TSRMLS_CC); if (IS_CV == IS_VAR && value_ptr_ptr && !Z_ISREF_PP(value_ptr_ptr) && opline->extended_value == ZEND_RETUR...
阅读全文
摘要:http://www.zihou.me/html/2010/11/14/2658.html http://www.linuxidc.com/Linux/2011-04/34964p4.htm http://www.cnblogs.com/jsckdao/archive/2011/05/05/2038
阅读全文
摘要:在工作中遇到 关于 php foreach 引用的一个问题简单来说,如下代码$arr=array('a','b','c' ,'d');foreach($arr as $k=>&$v){ ........} foreach($arr as $k=>$v){........} print_r($arr...
阅读全文
摘要:在做公司的一个项目中,需要上传文件,使用的是AjaxUpload JS组件,选择完文件后,发送请求到指定接口,随即返回服务器上文件的相对路径,然后PHP再做其他工作(这不是重点) 处理上传的PHP程序,限制其文件大小为20M php.ini中 post_max_size 20M upload_max
阅读全文
摘要:在php5.3之前,为某变量分配内存是用宏MAKE_STD_ZVAL;737 #define MAKE_STD_ZVAL(zv) \ # /Zend/zend.h738 ALLOC_ZVAL(zv); \739 INIT_PZVAL(zv);165 #define ALLOC_Z...
阅读全文

浙公网安备 33010602011771号