<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[PHP kernel - Inside PHP]]></title><description><![CDATA[PHP的奥秘]]></description><link>https://blog.youkuaiyun.com/phpkernel</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; phpkernel]]></copyright><item><title><![CDATA[HTTP服务七层架构技术探讨]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/7332227</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/7332227</guid><author>phpkernel</author><pubDate>Thu, 08 Mar 2012 13:21:09 +0800</pubDate><description><![CDATA[玉面修罗  http://weibo.com/kalon


前言：太久没有做过技术分享了，这里把曾经老的新浪论坛里面使用过的架构技术做了改进和整理，最后总结了这么一篇，欢迎拍砖。


1.为什么分层？
   计算机领域的体系结构普遍采用了分层的方式。
   从整体结构来看： 
   从最底层的硬件往高层依次有操作系统->驱动程序->运行库->系统程序->应用程序等等。]]></description><category></category></item><item><title><![CDATA[PHP多线程版本HASH漏洞攻击工具]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/7169305</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/7169305</guid><author>phpkernel</author><pubDate>Sat, 31 Dec 2011 19:24:42 +0800</pubDate><description><![CDATA[漏洞相关信息： http://www.laruence.com/2011/12/30/2435.html
 
   系统要求：linux操作系统，PHP版本5及以上cli模式，多进程模式需要pctnl扩展支持。
 
  使用方式：  下载附件并解压，例如解压到 /usr/local/kalondos目录下  
 
假如PHP命令路径为:/usr/local/php5/bin/php]]></description><category></category></item><item><title><![CDATA[KalonQue文档]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/6608760</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/6608760</guid><author>phpkernel</author><pubDate>Fri, 15 Jul 2011 17:23:50 +0800</pubDate><description><![CDATA[1.关于KalonQue
    KalonQue一款完全基于PHP语言开发的队列软件产品。
队列（Queue）又称先进先出表（First In First Out），即先进入队列的元素，先从队列中取出。加入元素的一头叫“队头”，取出元素的一头叫“队尾”。
通过KalonQue可以将复杂的业务同步转异步以及异步转同步：
 1.当业务由同步转为异步的时候，业务会拥有更高的处理效率，响应速度更]]></description><category></category></item><item><title><![CDATA[KalonDaemon - 守护进程PHP版]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/6458991</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/6458991</guid><author>phpkernel</author><pubDate>Wed, 01 Jun 2011 12:41:00 +0800</pubDate><description><![CDATA[声明：这篇文章是我09年的时候发表在自己的之前的BLOG上的，属于原创内容，现在将文章转移到这里。守护进程也称精灵进程(daemon)，是生存期较长的一种进程。它们常常用在系统自举时启动，仅在系统关闭时才终止。因为它们没有控制终端，所以说它们是在后台运行的。UNIX类操作系统有很多的守护进程，它们执行日常事务活动。目前有大量的web站点基与PHP开发，业务逻辑都是由PHP来实现，很多时候我们也需要一个PHP的daemon来做一些日常事务，例如我们想每隔一个小时统计一下数据库中的某项数据，每天定期的执行一些备]]></description><category></category></item><item><title><![CDATA[ 神秘的变量名特性]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5750116</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5750116</guid><author>phpkernel</author><pubDate>Tue, 20 Jul 2010 16:32:00 +0800</pubDate><description><![CDATA[    在PHP语言中，变量都是保存在哈希表中，称为变量符号表，其中变量名为哈希表的键，变量名对应的容器zval的指针为哈希表中的值。所有全局变量放在一张主符号表中(也就是数组$GLOBALS对应的哈希表)。PHP语言有个特性，变量在命名时，$变量标识符后不能以数字开头。例如我们在以下代码:$111= "my";?>会报如下错误:Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in...从错误的描叙来看]]></description><category></category></item><item><title><![CDATA[PHP新的垃圾回收机制:Zend GC详解]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5734743</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5734743</guid><author>phpkernel</author><pubDate>Wed, 14 Jul 2010 16:14:00 +0800</pubDate><description><![CDATA[    在5.2及更早版本的PHP中，没有专门的垃圾回收器GC（Garbage Collection），引擎在判断一个变量空间是否能够被释放，是依据这个变量的zval的refcount是否为0，如果refcount为0，那么变量的空间可以被释放，否则就不释放，这是一种非常简单的GC实现。然而在这种简单的GC实现方案中，出现了意想不到的变量内存泄漏情况，而且引擎无法回收这些内存，于是在PHP5.3中出现了新的GC，新的GC有专门的GC机制负责清理垃圾数据，防止内存泄漏。本文将详细的阐述PHP5.3中新的GC运]]></description><category></category></item><item><title><![CDATA[变量的内部存储：引用和计数]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5732784</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5732784</guid><author>phpkernel</author><pubDate>Tue, 13 Jul 2010 21:17:00 +0800</pubDate><description><![CDATA[    在引擎内部，一个PHP的变量是保存在“zval”结构中，此结构包含了变量的类型和值信息，这个在之前的文章  PHP变量如何实现弱类型特性 中已经介绍了，此结构还有另外两个字段信息，一个是"is_ref"(此字段在5.3.2版本中是is_ref__gc)，此字段是一个布尔值，用来标识变量是否是一个引用，通过这个字段，PHP引擎能够区分一般的变量和引用变量。PHP代码中可以通过 & 操作符号来建立一个应用变量，建立的应用变量内部的zval的is_ref字段就为1。zval中还有另外一个字段refcoun]]></description><category></category></item><item><title><![CDATA[zend_execute: op执行过程详解]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5721384</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5721384</guid><author>phpkernel</author><pubDate>Thu, 08 Jul 2010 16:49:00 +0800</pubDate><description><![CDATA[    解释器引擎最终执行op的函数是zend_execute，实际上zend_execute是一个函数指针，在引擎初始化的时候zend_execute默认指向了execute,这个execute定义在zend_vm_execute.h：ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
{
	zend_execute_data *execute_data;
	zend_bool nested = 0;
	zend_bool origin]]></description><category></category></item><item><title><![CDATA[OPcode简介]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5721134</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5721134</guid><author>phpkernel</author><pubDate>Thu, 08 Jul 2010 15:28:00 +0800</pubDate><description><![CDATA[    运行一段PHP代码主要有两个阶段:编译和执行, 当然编译过程中还包括词法分析语法分析不同阶段和细节，这里我们将其作为一个整体。在这两个阶段之间，PHP代码会被编译成op code，可以将其认为是引擎的一个中间语言，编辑阶段把PHP源码生成op code,然后在执行阶段执行这些op code。这篇文章将简单的介绍op code。    PHP代码编译之后会生成许多的op，每一个op都是一个zend_op类型的c变量。相关的定义可以在{PHPSRC}/Zend/zend_compile.h中看到:str]]></description><category></category></item><item><title><![CDATA[源码分析必备:用vld查看opcode信息]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5718519</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5718519</guid><author>phpkernel</author><pubDate>Wed, 07 Jul 2010 14:32:00 +0800</pubDate><description><![CDATA[ VLD(Vulcan Logic Dumper)的简介如下：The Vulcan Logic Dumper hooks into the Zend Engine and dumps all the opcodes (execution units) of a script. It can be used to see what is going on in the Zend Engine. ]]></description><category></category></item><item><title><![CDATA[变量的内部存储：值和类型 ]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5718003</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5718003</guid><author>phpkernel</author><pubDate>Wed, 07 Jul 2010 11:16:00 +0800</pubDate><description><![CDATA[    PHP是一种弱类型的脚本语言，弱类型不表示PHP的变量没有类型区分，PHP变量有8种原始类型：四种标量类型： boolean（布尔型） integer（整型） float（浮点型，也作“double”） string（字符串） 两种复合类型： array（数组） object（对象） 两种特殊类型： resource（资源） NULL一个变量能在运行期间从一种类型转换为另一种类型，那么PHP是如何实现这种变量的类型戏法的呢？]]></description><category></category></item><item><title><![CDATA[PHP解释器引擎执行流程]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5716342</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5716342</guid><author>phpkernel</author><pubDate>Tue, 06 Jul 2010 16:06:00 +0800</pubDate><description><![CDATA[    这里将介绍引擎内部执行一段PHP代码的流程，以cli SAPI为例子来对流程中核心的部分做简单介绍，省去一些初始化及清理操作。    cli（Command Line Interface）即PHP的命令行模式，现在此SAPI是默认安装的，我们在服务器上安装完PHP之后，一般会生成一个可执行文件，假设此文件为/usr/local/bin/php ,那么我们在SHELL下可以用以下命令来执行一个PHP脚本：/usr/local/bin/php test.php这个命令将执行当前目录下的test.php脚]]></description><category></category></item><item><title><![CDATA[PHP代码如何被执行？]]></title><link>https://blog.youkuaiyun.com/phpkernel/article/details/5714302</link><guid>https://blog.youkuaiyun.com/phpkernel/article/details/5714302</guid><author>phpkernel</author><pubDate>Mon, 05 Jul 2010 18:15:00 +0800</pubDate><description><![CDATA[    众所周知，计算机（具体是CPU）只能执行二进制的机器码，每种CPU都有对应的汇编语言，汇编语言编译器将汇编语言翻译成二进制的机器语言，然后CPU开始执行这些机器码。汇编语言作为机器语言与程序设计者之间的一个层，给我们带来了很多方便，程序员不需要用晦涩的01数字来书写程序，当然人们并不满足这样的一个进步，于是在汇编语言之上又多了一个层-C语言，C语言更贴近人类熟悉的“自然语言”，程序设计者可以通过C语言编译器将C源代码文件编译成目标文件（二进制文件，中间会先翻译成汇编语言，然后由汇编语言生成机器码），]]></description><category></category></item></channel></rss>