<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[God's blog]]></title><description><![CDATA[梦只在昨天，今天仍需努力]]></description><link>https://blog.youkuaiyun.com/a600423444</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a600423444]]></copyright><item><title><![CDATA[PHP扩展实现的简单MVC框架]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/23374995</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/23374995</guid><author>a600423444</author><pubDate>Thu, 10 Apr 2014 18:45:26 +0800</pubDate><description><![CDATA[公司项目中WEB项目几乎都是使用codeigniter框架，为了降低PHP的单次执行请求时间、减低服务器处理响应时间，
同时提高每分钟应答的总数，开发这个扩展的目的是将Router、Template、Config、Controller等框架提高的基础通用功能由底层实现，
PHP脚本仅处理业务逻辑，发挥各自的优势。


考虑到项目迁移的成本，所以此扩展的MVC也是基于CI原型来设计的，同时]]></description><category></category></item><item><title><![CDATA[VS2012开发调试PHP扩展]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/12720543</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/12720543</guid><author>a600423444</author><pubDate>Tue, 15 Oct 2013 00:02:04 +0800</pubDate><description><![CDATA[前言
开发中必不可少的环节就是调试，而调试的方式直接影响到开发效率和软件质量。
之前开发PHP扩展，一直不会DEBUG调试，每次调试都是重新编译、执行再运行PHP脚本看运行状况再调试。太痛苦、太影响效率了。也百度、谷歌了如何调试PHP扩展的问题，但回答的几乎都是GDB，可惜也不知道如何实际操作。
VS用的不多，很多功能也不知道干嘛的，前几天有位同事说可以用VS的“附加到进程”来调试PHP的扩]]></description><category></category></item><item><title><![CDATA[PHP扩展 - 《config》]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/12158163</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/12158163</guid><author>a600423444</author><pubDate>Sun, 29 Sep 2013 11:50:15 +0800</pubDate><description><![CDATA[《config》扩展是实现将配置选项加载到内存中。 建议使用场景： 1、多个项目中需要调用共用的配置，使用config来管理，避免一式多份的拷贝维护。 2、配置选项很多，使用config加载入内存，可以避免PHP每次加载配置文件进行解释执行。]]></description><category></category></item><item><title><![CDATA[分析Redis架构设计]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8944601</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8944601</guid><author>a600423444</author><pubDate>Sat, 18 May 2013 18:13:31 +0800</pubDate><description><![CDATA[一、前言


因为近期项目中开始使用Redis，为了更好的理解Redis并应用在适合的业务场景，需要对Redis设计与实现深入的理解。
我分析流程是按照从main进入，逐步深入分析Redis的启动流程。同时根据Redis初始化的流程，理解Redis各个模块的功能及原理。





二、redis启动流程





1.初始化server变量，设置redis相关的默认]]></description><category></category></item><item><title><![CDATA[扩展实现PHP Benchmark]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8914385</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8914385</guid><author>a600423444</author><pubDate>Sat, 11 May 2013 15:43:47 +0800</pubDate><description><![CDATA[一、PHP Benchmark实现思路
在看Redis慢查询日志实现的过程中，觉得这个功能很有用，能够帮助快速分析出性能问题出处，所以想到为PHP实现这样的功能。
实现思路也是借鉴Redis对于慢查询的处理流程。(此扩展目前仅支持Linux)


此扩展的作用是帮助分析执行时间过长的PHP脚本记录的要素有：
1、脚本执行时间
2、当前请求的REQUEST数据
3、当前请求的文件相对]]></description><category></category></item><item><title><![CDATA[PHP内核中的神器之HashTable]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8850617</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8850617</guid><author>a600423444</author><pubDate>Thu, 25 Apr 2013 17:23:46 +0800</pubDate><description><![CDATA[一、哈希表定义
哈希表(或散列表)，是将键名key按指定的散列函数HASH经过HASH(key)计算后映射到表中一个记录，而这个数组就是哈希表。
这里的HASH指任意的函数，例如MD5、CRC32、SHA1或你自定义的函数实现。


二、HashTable性能
HashTable是一种查找性能极高的数据结构，在很多语言内部都实现了HashTable。
理想情况下HashTable的性]]></description><category></category></item><item><title><![CDATA[C实现PHP的mysql数据库连接池]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8835801</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8835801</guid><author>a600423444</author><pubDate>Mon, 22 Apr 2013 18:22:10 +0800</pubDate><description><![CDATA[一、导语
连接池在JAVA中应用的很广泛，而在PHP中很少使用。
以Mysql为例，JAVA中使用连接池的原因之一是避免重复新建、释放连接资源带来的开销。而在PHP中都是直连，因为这部分开销对于C API而言性能上是没有问题的。
那么既然PHP直连已经没有性能问题，那为何还要多次一举开发mysql的数据库连接池扩展呢？因为根本的目的是在于理解PHP的TS(Tthread Safe线程安全)与]]></description><category></category></item><item><title><![CDATA[队列服务开发]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8811860</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8811860</guid><author>a600423444</author><pubDate>Wed, 17 Apr 2013 01:21:58 +0800</pubDate><description><![CDATA[看了HTTPSQS，自己尝试开发了队列服务器。原理是借鉴HTTPSQS，只是通信协议层没有使用HTTP协议，而是自己的定的协议规则。
一是为了练手，练习检测内存泄露同时巩固指针的使用。
二是为了理解通信协议。
目前只支持Windows下的编译，后面会支持Linux。（现已支持Linux）
我每次都是先在windows下开发，之后再到调试支持linux下的编译。因为Linux的桌面版真心蛋疼]]></description><category></category></item><item><title><![CDATA[C实现PHP扩展《Cabinet》]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8732946</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8732946</guid><author>a600423444</author><pubDate>Thu, 28 Mar 2013 18:45:56 +0800</pubDate><description><![CDATA[这个扩展是将Tokyo Cabinet的部分API提供给PHP客户端调用。

下面是来自百度百科的一段对Tokyo Cabinet的介绍：


Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序




  



列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念]]></description><category></category></item><item><title><![CDATA[PHP数据压缩、加解密(pack, unpack)]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8653827</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8653827</guid><author>a600423444</author><pubDate>Sat, 09 Mar 2013 15:21:08 +0800</pubDate><description><![CDATA[网络通信、文件存储中经常需要交换数据，为了减少网络通信流量、文件存储大小以及加密通信规则，经常需要对数据进行双向加解密以保证数据的安全。
PHP中实现此功能主要需要使用的函数主要是pack及unpack函数


pack

压缩资料到位字符串之中。

语法: string pack(string format, mixed [args]...);
返回值: 字符串
本函数用来将]]></description><category></category></item><item><title><![CDATA[C实现PHP扩展《Image_Tool》图片常用处理工具类]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8642700</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8642700</guid><author>a600423444</author><pubDate>Wed, 06 Mar 2013 15:48:07 +0800</pubDate><description><![CDATA[该扩展是基于ImageMagick基础实现的，图片操作调用的是ImageMagick API。

一、类文档说明
class Image_Tool{
    /**
     * 构造Image_Tool对象
     * @param string|array $img_data
     * $img_data可以为图片的路径
     */
	function __construct(]]></description><category></category></item><item><title><![CDATA[C实现PHP扩展《Fetch_Url》类数据抓取]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8614475</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8614475</guid><author>a600423444</author><pubDate>Tue, 26 Feb 2013 17:28:29 +0800</pubDate><description><![CDATA[该扩展是基于libcurl基础实现的网页数据抓取。
一、类文档说明
class FetchUrl{
	function __construct();

	//返回网页内容 常用于fetch()方法返回false时
	function body();

	//将对象的数据重新初始化,用于多次重用一个FetchUrl对象
	function clean();

	//返回错误信息
	functio]]></description><category></category></item><item><title><![CDATA[使用Sublime开发PHP扩展]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8108999</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8108999</guid><author>a600423444</author><pubDate>Thu, 25 Oct 2012 08:05:40 +0800</pubDate><description><![CDATA[一、使用命令行编译VS项目
无需再用VS来进行开发PHP扩展。这样可以配合任意你喜欢的开发工具。
使用VS_ROOT\Common7\IDE\devenv.exe进行编译
具体使用方法可以使用devenv /?，输出帮助查看




@VS_ROOT：表示VS安装路径



二、在扩展目录中新建build.bat，并输入
devenv EXTENSION_NAME.sln]]></description><category></category></item><item><title><![CDATA[Windows中搭建PHP扩展开发环境]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/8108993</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/8108993</guid><author>a600423444</author><pubDate>Thu, 25 Oct 2012 08:00:49 +0800</pubDate><description><![CDATA[一、提前准备

下载并安装VS2008
下载PHP5.4.5程序：
NTS下载
TS下载
其中php二进制包分为VC6、VC8、VC9及TS和NTS版本。
VC6、VC8、VC9分别对应VC6、VC2005、VC2008
TS表示(Thread Safe)，当以ISAPI(IIS SERVER)允许时，因为是单进程中执行多线程，为避免内存泄漏和共享变量安全，建议使用TS版本。
当]]></description><category></category></item><item><title><![CDATA[PHP扩展模块结构]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/7931257</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/7931257</guid><author>a600423444</author><pubDate>Sat, 01 Sep 2012 00:03:04 +0800</pubDate><description><![CDATA[所有PHP扩展遵循一个共同的结构
1、头文件包含(包括所有需要的宏、API)
2、C声明导出函数
3、声明Zend函数块




一、头文件包含

通过ext_seketon新建的扩展，默认都会新建一个php_extname.h的头文件。其中包含了
php.h，该文件导入Zend基本的宏和API。




二、声明导出函数

ZEND_FUNCTION(my_f]]></description><category></category></item><item><title><![CDATA[GLib介绍与使用]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/7787032</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/7787032</guid><author>a600423444</author><pubDate>Thu, 26 Jul 2012 00:43:29 +0800</pubDate><description><![CDATA[GLib是一种底层库，创建GDK和GTK应用程序时该库提供许多有用的定义和函数。
包括基本类型及限制的定义、标准宏、类型转化、字节序、存储分配、警告和断言、消息记录、计时器、字符串工具、hook函数、句法扫描器、动态加载模块和字符串自动补全，同时也提供了许多数据类型及相关操作。
包括存储块、双向链表、单向链表、哈希表、动态列表、关系和元组及缓存。最后GLib具有很好的移植性，所以使用GLib作]]></description><category></category></item><item><title><![CDATA[GTK XML语法解析器开发]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/7761287</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/7761287</guid><author>a600423444</author><pubDate>Thu, 19 Jul 2012 00:05:47 +0800</pubDate><description><![CDATA[篇一、开发前言
学习GTK＋，原来的目的是能够锻炼Linux C的开发能力。因为工作中很少能用到C，所以希望借此机会实战中学习C。
在使用GTK＋设计界面时，需要编写大量重复且有规律可循的代码，让开发工作中的大量时间耗费在界面布局中。
加上之前研究过Android界面设计，感觉非常方便，用通俗易懂的XML来描述界面，并解析渲染成最终的界面，所以想到了开发这个工具。
反正最终目的，只是为了能]]></description><category></category></item><item><title><![CDATA[使用GDB进行调试]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/7761249</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/7761249</guid><author>a600423444</author><pubDate>Thu, 19 Jul 2012 00:04:20 +0800</pubDate><description><![CDATA[使用GDB调试C程序
GDB是GNU开源组织发布的一个非图形化的Unix下的程序调试软件。
它能使用户在程序运行时观察数据的内部结构和内存使用情况。


GDB提供的主要功能：
1）监视程序中的变量值
2）设置断点，使程序在指定代码行停止。
3）单步执行
4）动态改变程序的执行环境
等


一、调试一个简单的程序
1、编写主程序test.c
#include 

in]]></description><category></category></item><item><title><![CDATA[PHP内核中读取$_GET\$_POST等全局变量]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/7678164</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/7678164</guid><author>a600423444</author><pubDate>Wed, 20 Jun 2012 00:23:12 +0800</pubDate><description><![CDATA[一、内核中获取$_GET\$_POST\$_SERVER\$_FILES\$_COOKIE等全局变量
HashTable是PHP很多实现的基础，例如$_GET\$_POST等全局变量实现。
那么，在扩展中读取这些全局变量，当然还是操作HashTable。
内核中初始化环境变量的通过main/php_variables.c中php_hash_environment(TSRMLS_D)
PHP]]></description><category></category></item><item><title><![CDATA[PHP资源类型]]></title><link>https://blog.youkuaiyun.com/a600423444/article/details/7566799</link><guid>https://blog.youkuaiyun.com/a600423444/article/details/7566799</guid><author>a600423444</author><pubDate>Mon, 14 May 2012 22:45:00 +0800</pubDate><description><![CDATA[在PHP中，我们经常使用到资源类型变量。例如：mysql连接、文件句柄等。
这些变量无法使用标量来表示，那么在Zend内核中是如何将PHP中的资源变量与C语言中的资源衔接的呢？


一、资源变量在PHP中的使用

$fp = fopen("test.txt", "rw");

var_dump($fp);

fclose($fp);
打印结果：resource(5) of type]]></description><category></category></item></channel></rss>