"这份资源是关于在Linux环境下开发PHP扩展的教程,主要针对有Linux操作基础,熟悉PHP和C/C++的开发者。课程通过PPT形式,提供了5分钟快速入门的指南,涵盖了扩展开发的基本流程、所需技能、潜在问题以及何时考虑开发扩展。"
在Linux下开发PHP扩展是一个涉及多方面技术的过程,对于熟悉PHP和C/C++的开发者来说,这可以用来提升性能或实现PHP内核级别的功能。课程的前言部分强调了以下几个关键点:
1. **学习目标**:通过课程,你可以了解PHP扩展的两种编译方式,掌握扩展开发的基本流程,并学会创建一个具有简单功能的扩展。
2. **所需技能**:开发扩展需要对Linux操作系统熟练,理解PHP语言,并具备C/C++编程经验,同时要熟悉Linux下的C/C++开发、调试和编译。
3. **开发扩展的挑战**:自定义扩展通常比用PHP编写同等功能更复杂,维护困难,需要重新编译部署,且可能存在系统和PHP版本的兼容性问题。
4. **开发扩展的时机**:只有当对效率有极高要求(CPU密集型任务)、功能与业务关联不大、功能稳定且简单、或者PHP无法实现该功能时,才考虑开发扩展。
5. **兼容性问题**:PHP版本和glibc/gcc版本的不匹配可能导致扩展无法正常工作。解决这个问题的方法是在开发和测试环境中使用与生产环境相同版本的PHP和相关工具链。
6. **开发环境**:教程使用的环境是基于CentOS 6.4 64位,使用gcc 4.4.7和glibc 2.12,以及PHP 5.3.9 (DEBUG)。
在**准备工作**阶段,开发者需要配置PHP环境,包括编译PHP,设置php-fpm,配置Nginx,以及确保PHP二进制路径被添加到环境变量中。
**扩展的编译方式**分为两种:
1. **静态编译**:在编译PHP时通过`--enable-extname`或`--with-extname`将扩展集成到PHP中。这种方式的优点是扩展运行速度快,但缺点是每次修改扩展都需要重新编译整个PHP。
2. **动态编译为so文件**:使用`phpize`生成makefiles,然后编译成可动态加载的so文件。这种方式允许不重新编译PHP即可动态加载扩展,但可能运行速度稍慢。
在实际开发过程中,开发者可以根据项目需求和资源限制选择合适的编译方式。