Press "Enter" to skip to content

使用PHP Embed SAPI实现Opcodes查看器

PHP提供了一个Embed SAPI,也就是说,PHP容许你在C/C++语言中调用PHP/ZE提供的函数。本文就通过基于Embed SAPI实现一个PHP的opcodes查看器。
首先,下载PHP源码以供编译, 我现在使用的是PHP5.3 alpha2
进入源码目录:

 ./configure --enable-embed
 ./make
 ./make install

最后,记得要将生成的libphp5.so复制到运行时…

Filed in PHP应用, PHP源码分析
with 27 Comments

PHP5.3 α2初体验

PHP5.3 α2 已经放出1个多月了, 最近一直都忙一些私人的事情, 今天终于有点时间.

赶紧下来试用, apache2.x + php5.3 alpha2

changes:

Filed in PHP应用
with 9 Comments

HTTP1.0下HTTP_HOST为空

昨天xuepeng师兄提出一个问题是 $_SERVER[‘HTTP_HOST’]为空, 经过我翻看RFC文档以及测试,得出结论如下:
在http 1.1中, host字段是不能为空的,如果为空, Apache会认为是400 bad request

但是在http 1.0中, host字段是可以为空的.具体看列子….

Filed in PHP应用, 随笔
with 10 Comments

PHP5多层继承顺序的bug

今天guoxiaod提出了一个问题,如下:

<?php
class a extends b {
};
class b extends c{
};
class c{
};
?>
  

会导致fatal error:

PHP Fatal error:  Class 'b' not found in /home/xinchen/1.php on line 2
Fatal error: Class 'b' not found in /home/xinchen/1.php on line 2

分析这个问题,是运行阶段出错,经过分析PHP的编译,执行过程,得出如下的parsing顺序…

Filed in Linux/Unix, PHP应用, PHP源码分析
with 13 Comments

深入理解PHP原理之变量(Variables inside PHP)

或许你知道,或许你不知道,PHP是一个弱类型,动态的脚本语言。所谓弱类型,就是说PHP并不严格验证变量类型(严格来讲,PHP是一个中强类型语言,这部分内容会在以后的文章中叙述),在申明一个变量的时候,并不需要显示指明它保存的数据的类型。而PHP的核心ZE是用C编写的,大家都知道C是一个强类型语言,也就是说,在C中所有的变量在它被声明到最终销毁,都只能保存一种类型的数据。 那么PHP是如何在ZE的基础上实现弱类型的呢?且听我慢慢道来….

Filed in PHP应用, PHP源码分析
with 47 Comments

PHP的单引号和双引号

经常有人问我,听说在PHP中处理字符串用单引号会快,那么如果存在变量替换的时候,是使用单引号连接快呢,还是双引号快呢? 简单的回答,显然是苍白无力的。 今天我们来做个实验,看看到底单引号和双引号有什么区别,谁快,谁慢。

Filed in PHP应用, PHP源码分析
with 17 Comments

用Tidy优化你的HTML(Optimizing HTML with Tidy)

最近试用了很多的编辑器, 都有一个共同的缺点, 就是如果直接输入HTML,并且HTML格式错误, 有没有闭合的标签,就有可能导致最终的页面乱掉。 想了几个办法效果都不太好, 呵呵,tidy来了! 手册介绍:

  Tidy is a binding for the Tidy HTML clean and repair utility which allows you to not only clean and otherwise manipulate HTML documents, but also traverse the document tree.
    

Filed in PHP应用
with 7 Comments