基于 libgit2 C 语言库的 php-git 扩展 fix bug 辛酸史

前言这是一篇极其没有节(nei)操(rong)的文章。除非你真的无聊,请不要阅读,否则后果自负正文最近,在忙活微博话题组的日构建工具。工具主要的功能并不算复杂。写着写着,外面雨过天晴,居然还放起爆竹了,什么鬼。构建工具的主要功能正如介绍中所述的那样,提取产品、测试等基本信息、提取版本库(git)信息、检查(编译)源文件、自动部署项目与发送邮件等。在提取 git 库信息时,相对于之前利用 shell_exec PHP 原生函数提取 svn 信息的方式,打算利用扩展来提取信息。一来更规范、更有效率(微乎其微),二来专业。缺点是相对而言部署环境麻烦,因为需要安装 git 扩展到当前 php 运行环境中来。但是,万万没想到官方推荐的 php-git 扩展库开发版本已有3年没有维护了。索性用吧,又能怎样。安装还算顺利,由于公司开发机没有 cmake,yum 源也不可用,懒得配置,直接 downlo... Read More

关于“如何开发 PHP 扩展”的学习小结

近期,工作上的业务并不是很忙。做了大半年的业务逻辑,尽管在 PHP 编码习惯和技巧上有所进步,初步熟悉了在高并发下 Redis 和 Memcache 缓存的使用和注意事项。但,应该借此闲暇时间探索下 PHP 底层的一些原理。这样,才是会有质的提升,写出更好的代码。正如那句话“PHP 取得成功的一个主要原因之一是她拥有大量的可用扩展”,那就从 PHP 扩展入手了解下。在此之前,大家肯定都了解“PHP 是 C 写的”。于是打开了 PHP 的源码,列出跟目录列表如下图PHP(5.6.4)跟目录列表看到了熟悉的以后缀 .c 结尾的源文件。如图,有个名为“Zend”的文件夹很重要,这个就是 PHP 的核心。于是在网上搜到了两个若干 PHP 扩展的教程http://www.laruence.com/2009/04/28/719.htmlhttp://www.walu.cc/phpboo起初,耐心... Read More