随笔分类 - php
摘要:本章开始研究php中函数的调用和执行,先来看函数调用语句是如何被编译的。 我们前面的章节弄明白了函数体会被编译生成哪些zend_op指令,本章会研究函数调用语句会生成哪些zend_op指,等后面的章节再根据这些op指令,来剖析php运行时的细节。 源码依然取自php5.3.29。 函数调用 回顾之前
阅读全文
摘要:本文只探讨纯粹的函数,并不包含方法。对于方法,会放到类、对象中一起研究。 想讲清楚在zend vm中,函数如何被正确的编译成op指令、如何发生参数传递、如何模拟调用栈、如何切换作用域等等,的确是一个很大范畴的话题。但为了弄明白php的原理,必须要攻克它。 对函数的研究,大致可以分成两块。第一块是函数
阅读全文
摘要:在做php开发的时候,经常会设置max_input_time、max_execution_time,用来控制脚本的超时时间。但却从来没有思考过背后的原理。 趁着这两天有空,研究一下这个问题。文中源码取自php5.4.44版本。 超时配置 php的ini配置如何起作用,这是一个老生常谈的话题了。 首先
阅读全文
摘要:继续接着上一篇写。 运行时改变配置 在前一篇中曾经谈到,ini_set函数可以在php执行的过程中,动态修改php的部分配置。注意,仅仅是部分,并非所有的配置都可以动态修改。关于ini配置的可修改性,参见:http://php.net/manual/zh/configuration.changes.
阅读全文
摘要:这篇文章不会详细叙述某个ini配置项的用途,这些在手册上已经讲解的面面俱到。我只是想从某个特定的角度去挖掘php的实现机制,会涉及到一些php内核方面的知识:-) 使用php的同学都知道php.ini配置的生效会贯穿整个SAPI的生命周期。在一段php脚本的执行过程中,如果手动修改ini配置,是不会
阅读全文
摘要:项目中有个功能是比较会员是否过期,review同事的代码,发现其写法比较奇葩,但线上竟也未出现bug。 实现大致如下: 如果两个时间需要进行比较,通常是转换成unix时间戳,用两个int型的数字进行比较。该实现却特意将时间表示成string,然后对两个string进行比较运算。 撇开写法不谈,我很好
阅读全文
摘要:原文:https://bugs.php.net/bugs-getting-valgrind-log.php 前提 1,编译php的时候,必须要带上--enable-debug选项。 2,禁用php的内存管理。 禁用Zend MM Zend虚拟机使用了自己的程序来优化内存管理,因此,valgrind无
阅读全文
摘要:首先说下今天想到的一个问题。在编写php扩展的时候,似乎参数(即传给zend_parse_parameters的变量)是不需要free的。举例: 运行正常: 这里不用担心test函数会发生内存泄露,php会自动帮我们回收这些用于保存参数的变量。 那php究竟是如何做到的呢?要解释这个问题,还是得看p
阅读全文
摘要:构建步骤 1, 安装vs2008 2, 安装windows sdk 6.1 3, 下载php 5.2源码,可以从此处获取Releases (先不要解压) 4, 下载bindlib_w32.zip,http://www.php.net/extra/bindlib_w32.zip 5, 下载win32b
阅读全文
摘要:看了@轩脉刃 今天出炉的PHP 5.5 新特性。不过没有翻译全,我这里稍微补充下,整理成完整的一篇:) 原文:http://www.php.net/manual/zh/migration55.new-features.php 生成器 php5.5通过引入yield关键字来支持generators。G
阅读全文
摘要:看手册说define定义的常量只允许: 仅允许标量和 null。标量的类型是 integer, float,string 或者 boolean。 也能够定义常量值的类型为 resource ,但并不推荐这么做,可能会导致未知状况的发生。 今天阅读php源码,发现define的第二个参数其实也可以是一
阅读全文
摘要:前言 php4中引入了foreach结构,这是一种遍历数组的简单方式。相比传统的for循环,foreach能够更加便捷的获取键值对。在php5之前,foreach仅能用于数组;php5之后,利用foreach还能遍历对象(详见:遍历对象)。本文中仅讨论遍历数组的情况。 foreach虽然简单,不过它
阅读全文
摘要:这是一篇翻译的文章,原文参见:https://wiki.php.net/internals/windows/stepbystepbuild 顺便提一句,wiki.php.net有很多精彩的内容,想深入了解php的同学千万不要错过:) 准备工作 在windows平台上编译php,需要三样准备工作: 1
阅读全文
浙公网安备 33010602011771号