<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_个人博客已迁移至codinglabs.org，博客园不再更新_分类_[04]PHP</title><id>http://feed.cnblogs.com/blog/u/35418/category/273963/rss</id><updated>2012-06-03T20:24:18Z</updated><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoo2sk/category/273963.html"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/35418/category/273963/rss"/><entry><id>http://www.cnblogs.com/leoo2sk/archive/2012/05/16/opdumper-and-web-opcode-dumper.html</id><title type="text">发布一个查看PHP opcode的扩展模块及Web服务</title><summary type="text">最近花了大约一星期的时间写了一个PHP扩展模块Opdumer，并封装成了Web服务（点击这里访问）。这个模块的主要内容是输出PHP代码对应的opcode。其实之前已经有一些用于查看opcode的扩展模块，如比较有名的vld。之所以重新实现一个这样的模块，主要是因为vld不支持PHP_FUNCTION API，也就是说vld只能用于CLI形式，而Opdumer同时拥有CLI API和PHP_FUNCTION API，另外，也想借助编写这个模块的机会学习Zend Engine中opcode的编译和执行机制。个人打算后面专门针对opcode的编译执行机制写一篇文章，而本文主要描述Opcode的使用方法及对应Web服务的使用。</summary><published>2012-05-16T12:43:00Z</published><updated>2012-05-16T12:43:00Z</updated><author><name>T2噬菌体</name><uri>http://www.cnblogs.com/leoo2sk/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoo2sk/archive/2012/05/16/opdumper-and-web-opcode-dumper.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoo2sk/archive/2012/05/16/opdumper-and-web-opcode-dumper.html"/><content type="html"/></entry><entry><id>http://www.cnblogs.com/leoo2sk/archive/2011/11/09/write-daemon-with-php.html</id><title type="text">如何使用PHP编写daemon process</title><summary type="text">今天下午在segmentfault.com看到一个提问，提问标题是“PHP怎么做服务化”，其中问道php是不是只能以web方式调用。其实很多人对PHP的使用场景都有误解，认为php只能用于编写web脚本，实际上，从PHP4开始，php的使用场景早已不限于处理web请求。 从php的架构体系来说，php分为三个层次：sapi、php core和zend engine。php core本身和web没有任何耦合，php通过sapi与其它应用程序通信，例如mod_php就是为apache编写的sapi实现，同样，fpm是一个基于fastcgi协议的sapi实现，这些sapi都是与web server配合用于处理web请求的。但是也有许多sapi与web无关，例如cli sapi可以使得在命令行环境下直接执行php，embed sapi可以将php嵌入其它语言（如Lua）那样。这里我并不打算详细讨论php的架构体系和sapi的话题，只是说明从架构体系角度目前的php早已被设计为支持各种环境，而非为web独有。 除了架构体系的支持外，php丰富的扩展模块也为php在不同环境发挥作用提供了后盾，例如</summary><published>2011-11-09T09:20:00Z</published><updated>2011-11-09T09:20:00Z</updated><author><name>T2噬菌体</name><uri>http://www.cnblogs.com/leoo2sk/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoo2sk/archive/2011/11/09/write-daemon-with-php.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoo2sk/archive/2011/11/09/write-daemon-with-php.html"/><content type="html"/></entry><entry><id>http://www.cnblogs.com/leoo2sk/archive/2011/11/07/zend-thread-safety.html</id><title type="text">深入研究PHP及Zend Engine的线程安全模型</title><summary type="text">在阅读PHP源码和学习PHP扩展开发的过程中，我接触到大量含有“TSRM”字眼的宏。通过查阅资料，知道这些宏与Zend的线程安全机制有关，而绝大多数资料中都建议按照既定规则使用这些宏就可以，而没有说明这些宏的具体作用。不知道怎么回事总是令人不舒服的，因此我通过阅读源码和查阅有限的资料简要了解一下相关机制，本文是我对研究内容的总结。 本文首先解释了线程安全的概念及PHP中线程安全的背景，然后详细研究了PHP的线程安全机制ZTS（Zend Thread Safety）及具体的实现TSRM，研究内容包括相关数据结构、实现细节及运行机制，最后研究了Zend对于单线程和多线程环境的选择性编译问题。</summary><published>2011-11-07T05:56:00Z</published><updated>2011-11-07T05:56:00Z</updated><author><name>T2噬菌体</name><uri>http://www.cnblogs.com/leoo2sk/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoo2sk/archive/2011/11/07/zend-thread-safety.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoo2sk/archive/2011/11/07/zend-thread-safety.html"/><content type="html"/></entry><entry><id>http://www.cnblogs.com/leoo2sk/archive/2011/02/27/php-gc.html</id><title type="text">浅谈PHP5中垃圾回收算法(Garbage Collection)的演化</title><summary type="text">PHP是一门托管型语言，在PHP编程中程序员不需要手工处理内存资源的分配与释放（使用C编写PHP或Zend扩展除外），这就意味着PHP本身实现了垃圾回收机制（Garbage Collection）。现在如果去PHP官方网站（php.net）可以看到，目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的，这是因为许多项目仍然使用5.2版本的PHP，而5.3版本对5.2并不是完全兼容。PHP5.3在PHP5.2的基础上做了诸多改进，其中垃圾回收算法就属于一个比较大的改变。本文将分别讨论PHP5.2和PHP5.3的垃圾回收机制，并讨论这种演化和改进对于程序员编写PHP的影响以及要注意的问题。</summary><published>2011-02-26T16:10:00Z</published><updated>2011-02-26T16:10:00Z</updated><author><name>T2噬菌体</name><uri>http://www.cnblogs.com/leoo2sk/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoo2sk/archive/2011/02/27/php-gc.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoo2sk/archive/2011/02/27/php-gc.html"/><content type="html"/></entry><entry><id>http://www.cnblogs.com/leoo2sk/archive/2010/12/09/talk-about-php-ext-develop-basic.html</id><title type="text">PHP Extension的开发基础</title><summary type="text">PHP是当前应用非常广泛的一门语言，从国外的Facebook、Twitter到国内的淘宝、腾讯、百度再到互联网上林林总总的各种大中小型网站都能见到它的身影。PHP的成功，应该说很大程度上依赖于其开放的扩展API机制和丰富的扩展组件（PHP Extension），正是这些扩展组件使得PHP从各种数据库操作到XML、JSON、加密、文件处理、图形处理、Socket等领域无所不能。有时候开发人员可能需要开发自己的PHP扩展，当前PHP5的扩展机制是基于Zend API的，Zend API提供了丰富的接口和宏定义，加上一些实用工具，使得PHP扩展开发起来难度并不算特别大。本文将介绍关于PHP扩展组件开发的基本知识，并通过一个实例展示开发PHP扩展的基本过程。</summary><published>2010-12-09T08:20:00Z</published><updated>2010-12-09T08:20:00Z</updated><author><name>T2噬菌体</name><uri>http://www.cnblogs.com/leoo2sk/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoo2sk/archive/2010/12/09/talk-about-php-ext-develop-basic.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoo2sk/archive/2010/12/09/talk-about-php-ext-develop-basic.html"/><content type="html"/></entry></feed>
