PHP扩展开发——环境部署
(2)在.c文件中实现导出函数
PHP_FUNCTION(sqlapm)
{
php_printf("sqlapm....");
}
phpize
./configure --with-php-config=..../php/bin/php-config
mak
(2)在.c文件中实现导出函数
然后在工程下面module目录下生myext.so文件,拷贝至lib/php/extensions/no-debug-non-zts-20121212目录下,修改php.ini文件,php -m验证模块是否加载。 2、Windows平台环境配置 Linux平台配置方式非常容易,但在Linux下查看php源码,开发效率效率较低,Windows下面VS IDE非常强大,智能提示都很方便。许多教程介绍VC++6.0的配置过程,但是VC++6.0平台不支持64位编译,而且win7以上兼容性不好,本节介绍的是VS2010配置过程。
如果生成出错php扩展,请检查下面两点: (1)事先要安装cygwin,并且修改ext_skel_win32.php中的$cygwin_path路径; (2)源码目录名不能包含空格;
第二行的VC11版本不是根据VS2010的VC10版本,而是要与windows二进制包中的php5ts.lib编译使用的VC版本一致,下面会讲php5ts.lib。 (2)再次编译,提示缺少php5ts_debug.lib php5ts.lib来自同版本php二进制包dev/目录下php5ts.lib文件,php5ts_debug.lib对应php debug包dev下的php5ts_debug.lib文件。 (3)再次编译,可能会提示“无法解析的外部符号” 这种错误在C++中很常见,一般都是.lib库没有正确包含了,你会发现前面已经包含了php5ts.lib文件,这里出错的原因就是php5ts.lib是64位lib包,将VS2010编译方式改成x64即可顺利编译。因此不建议使用VC++6.0,直到VS2005微软才支持x64编译方式。 Windows下配置环境事项: 建议安装Visual Assist X插件,智能智能提示非常强大;注意php binary包的VC编译器版本及编译位数(32/64);VS的编译方式也要与php binary包编译方式保持一致(Release/Debug);列表项目config.win32.h需要改成binary VC编译器版本; 后记: 我自己经历的学习PHP的过程是PHP基础学习、然后结合PHP框架(如Yii、CI等)做项目。 自己也用PHP做过几个项目,PHP语法层面已经比较熟悉,Ci框架用的比较多。框架更多的体现的是设计模式,统一开发规范、避免重复造轮子,没有项目的结合,单纯的看框架教程没什么意义。众所周知,PHP开发效率高,项目庞大了之后性能倒成了瓶颈,各种优化方法也很多。使用PHP扩展是解决性能瓶颈非常有效的方法,除此之外在扩展中引入多线程、epoll模型、Opencv都非常方便。虽然扩展开发非常有用,PHP开发入门比较容易,估计大部分PHP程序员都没有使用过,还是停留在框架使用层面,扩展开发更接近Zend虚拟机底层实现,使用C语言开发,对C/C++没有一定的工程调试经验,对操作系统及数据结构没有一定的理解学习起来确实很困难。后续文章会陆续介绍PHP生命周期、内核变量、HashTable实现、内存管理、ZendAPI及实际扩展开发DEMO。 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |