Linux 下PHP扩展开发系列:一. 前言
前言
开发PHP扩展已经有一段时间了,一边学习一边开发和总结,累并快乐着。
本着好记性不如烂笔头的原则,决定将开发过程一些问题写出来,抛砖引玉,共同进步。
因个人水平及文字表达能力所限,难免有错漏,欢迎指出,不胜感激!
本系列都是在Linux下进行开发,不涉及windows下的开发。
进入正题:
首先,开发PHP扩展需要个人具备什么技能呢?
- 熟悉Linux操作。毕竟是在Linux下开发嘛。
- 熟悉PHP,C/C++
- 了解Linux下 C/C++开发调试及编译
以上三点是在后面的系列中不会特意详细说明的地方,有不明白的地方还是需要大家自己去学习。
第二,我们要先想想自己为什么要开发PHP扩展,是因为个人兴趣和对技能提升的渴望,还是因为工作及业务需要?
前者是个人兴趣,兴趣是最好的老师,希望你与我一起坚持学习下去。
若是后者,则有一些问题需要先思考:
- 开发扩展比使用PHP开发相同功能成本与难度都要更高
- 后期维护不易
- 系统及PHP版本更新导致的一些兼容性问题
习惯了PHP简单的开发与维护,面对以上问题会很不适应,因此个人建议在以下情况才开发扩展:
- 对效率要求很高,特别是运算效率
- 功能与业务无关或关联很小,相对抽象
- 功能基本不会变动,且不会很复杂
- 功能使用PHP无法实现的或者资源无法访问
第三,需要明白扩展开发好后,能否使用会受到至少以下几个方面的影响:
- PHP源码版本,在PHP5.3.9下开发的扩展可能会无法在PHP5.2.17下使用,反之同理。(PHP5.2.17未定义PHP_FE_END与ZEND_MOD_END两个宏)
- Glibc 与 GCC版本,不同版本下编译的扩展可能不能互相通用。
简单的解决方案:
- 保证开发测试与真实服务器的以上版本一致。比如我在开发机上就部署了PHP5.2.17与PHP5.3.9两个版本,用于正式机不同版本PHP扩展的开发调试及编译
- 扩展的功能尽可能在PHP中也开发一份,这样可以保证服务器升级PHP扩展或扩展异常时功能仍然能够正常使用。
第四,本系列的开发环境如下:
-
CentOS release 6.4 (Final) 64位
-
gcc version 4.4.7, Glibc 2.12
-
PHP 5.3.9 (DEBUG)
OK,前言到此结束,准备进入下一篇 《Linux 下PHP扩展开发系列:二. 一个典型的扩展开发》