关闭

PHP扩展实现的简单MVC框架

公司项目中WEB项目几乎都是使用codeigniter框架,为了降低PHP的单次执行请求时间、减低服务器处理响应时间, 同时提高每分钟应答的总数,开发这个扩展的目的是将Router、Template、Config、Controller等框架提高的基础通用功能由底层实现, PHP脚本仅处理业务逻辑,发挥各自的优势。 考虑到项目迁移的成本,所以此扩展的MVC也是基于CI原型来设计的,同时...
阅读(4553) 评论(0)

VS2012开发调试PHP扩展

前言 开发中必不可少的环节就是调试,而调试的方式直接影响到开发效率和软件质量。 之前开发PHP扩展,一直不会DEBUG调试,每次调试都是重新编译、执行再运行PHP脚本看运行状况再调试。太痛苦、太影响效率了。也百度、谷歌了如何调试PHP扩展的问题,但回答的几乎都是GDB,可惜也不知道如何实际操作。 VS用的不多,很多功能也不知道干嘛的,前几天有位同事说可以用VS的“附加到进程”来调试PHP的扩...
阅读(15007) 评论(5)

PHP扩展 - 《config》

《config》扩展是实现将配置选项加载到内存中。 建议使用场景: 1、多个项目中需要调用共用的配置,使用config来管理,避免一式多份的拷贝维护。 2、配置选项很多,使用config加载入内存,可以避免PHP每次加载配置文件进行解释执行。...
阅读(3416) 评论(0)

分析Redis架构设计

一、前言 因为近期项目中开始使用Redis,为了更好的理解Redis并应用在适合的业务场景,需要对Redis设计与实现深入的理解。 我分析流程是按照从main进入,逐步深入分析Redis的启动流程。同时根据Redis初始化的流程,理解Redis各个模块的功能及原理。 二、redis启动流程 1.初始化server变量,设置redis相关的默认...
阅读(53154) 评论(28)

扩展实现PHP Benchmark

一、PHP Benchmark实现思路 在看Redis慢查询日志实现的过程中,觉得这个功能很有用,能够帮助快速分析出性能问题出处,所以想到为PHP实现这样的功能。 实现思路也是借鉴Redis对于慢查询的处理流程。(此扩展目前仅支持Linux) 此扩展的作用是帮助分析执行时间过长的PHP脚本记录的要素有: 1、脚本执行时间 2、当前请求的REQUEST数据 3、当前请求的文件相对...
阅读(7799) 评论(1)

PHP内核中的神器之HashTable

一、哈希表定义 哈希表(或散列表),是将键名key按指定的散列函数HASH经过HASH(key)计算后映射到表中一个记录,而这个数组就是哈希表。 这里的HASH指任意的函数,例如MD5、CRC32、SHA1或你自定义的函数实现。 二、HashTable性能 HashTable是一种查找性能极高的数据结构,在很多语言内部都实现了HashTable。 理想情况下HashTable的性...
阅读(15977) 评论(6)

C实现PHP的mysql数据库连接池

一、导语 连接池在JAVA中应用的很广泛,而在PHP中很少使用。 以Mysql为例,JAVA中使用连接池的原因之一是避免重复新建、释放连接资源带来的开销。而在PHP中都是直连,因为这部分开销对于C API而言性能上是没有问题的。 那么既然PHP直连已经没有性能问题,那为何还要多次一举开发mysql的数据库连接池扩展呢?因为根本的目的是在于理解PHP的TS(Tthread Safe线程安全)与...
阅读(16419) 评论(17)

队列服务开发

看了HTTPSQS,自己尝试开发了队列服务器。原理是借鉴HTTPSQS,只是通信协议层没有使用HTTP协议,而是自己的定的协议规则。 一是为了练手,练习检测内存泄露同时巩固指针的使用。 二是为了理解通信协议。 目前只支持Windows下的编译,后面会支持Linux。(现已支持Linux) 我每次都是先在windows下开发,之后再到调试支持linux下的编译。因为Linux的桌面版真心蛋疼...
阅读(11793) 评论(9)

C实现PHP扩展《Cabinet》

这个扩展是将Tokyo Cabinet的部分API提供给PHP客户端调用。 下面是来自百度百科的一段对Tokyo Cabinet的介绍: Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序    列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念...
阅读(6294) 评论(0)

PHP数据压缩、加解密(pack, unpack)

网络通信、文件存储中经常需要交换数据,为了减少网络通信流量、文件存储大小以及加密通信规则,经常需要对数据进行双向加解密以保证数据的安全。 PHP中实现此功能主要需要使用的函数主要是pack及unpack函数 pack 压缩资料到位字符串之中。 语法: string pack(string format, mixed [args]...); 返回值: 字符串 本函数用来将...
阅读(14691) 评论(0)

C实现PHP扩展《Image_Tool》图片常用处理工具类

该扩展是基于ImageMagick基础实现的,图片操作调用的是ImageMagick API。 一、类文档说明 class Image_Tool{ /** * 构造Image_Tool对象 * @param string|array $img_data * $img_data可以为图片的路径 */ function __construct(...
阅读(7552) 评论(0)

C实现PHP扩展《Fetch_Url》类数据抓取

该扩展是基于libcurl基础实现的网页数据抓取。 一、类文档说明 class FetchUrl{ function __construct(); //返回网页内容 常用于fetch()方法返回false时 function body(); //将对象的数据重新初始化,用于多次重用一个FetchUrl对象 function clean(); //返回错误信息 functio...
阅读(8631) 评论(1)

使用Sublime开发PHP扩展

一、使用命令行编译VS项目 无需再用VS来进行开发PHP扩展。这样可以配合任意你喜欢的开发工具。 使用VS_ROOT\Common7\IDE\devenv.exe进行编译 具体使用方法可以使用devenv /?,输出帮助查看 @VS_ROOT:表示VS安装路径 二、在扩展目录中新建build.bat,并输入 devenv EXTENSION_NAME.sln...
阅读(12618) 评论(1)

Windows中搭建PHP扩展开发环境

一、提前准备 下载并安装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版本。 当...
阅读(16699) 评论(7)

PHP扩展模块结构

所有PHP扩展遵循一个共同的结构 1、头文件包含(包括所有需要的宏、API) 2、C声明导出函数 3、声明Zend函数块 一、头文件包含 通过ext_seketon新建的扩展,默认都会新建一个php_extname.h的头文件。其中包含了 php.h,该文件导入Zend基本的宏和API。 二、声明导出函数 ZEND_FUNCTION(my_f...
阅读(10017) 评论(1)
253条 共17页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:937723次
    • 积分:11726
    • 等级:
    • 排名:第1431名
    • 原创:242篇
    • 转载:11篇
    • 译文:0篇
    • 评论:194条
    文章分类
    最新评论