当前位置: 首页 > 科技观察

别再天天写表格了,淘宝大牛教你零基础写PHP扩展

时间:2023-03-16 14:26:21 科技观察

很多PHPer天天写表格,不知如何提高。如果你已经熟悉数据集和服务端优化,不妨尝试通过PHP扩展进入系统层。当原有PHP代码实现存在性能瓶颈时,可以考虑通过PHP扩展实现;对于纯PHP代码无法实现的功能,可以考虑通过PHP扩展调用其他相关库。不仅可以提升业务能力,还可以通过扩展帮助大家逐步了解PHP源码层的运行机制。扩展很难上手。在此特别推荐淘宝大牛辛海龙老师的入门课程。一步一步教你,只需一元钱。我们策划了选集的第二章以供免费试用。(如果不喜欢付费课程,也可以通过PHP手册第二部分学习:http://php.net/manual/zh/internals2.structure.php)从helloworld(试读)开始以下内容以PHP7为基础,解释了如何从头开始创建PHP扩展。在示例中,我们将实现如下函数:输出内容:$php./test.php$helloword在扩展中实现一个say方法并调用say方法之后,输出你好词。第一步:生成代码PHP为我们提供了一个生成基本代码的工具ext_skel。该工具位于PHP源代码的./ext目录中。$cdphp_src/ext/$./ext_skel--extname=sayextname参数的值为扩展名。执行ext_skel命令后,会在当前目录下生成一个同扩展名的目录。第二步:修改config.m4配置文件config.m4的作用是配合phpize工具生成configure文件。配置文件用于环境检测。检查是否满足扩展编译运行所需的环境。现在我们开始修改config.m4文件。打开$cd./say$vim./config.m4,在config.m4文件后,你会发现这样一段文字。dnlIfyourextensionreferencessomethingexternal,usewith:dnlPHP_ARG_WITH(say,forsaysupport,dnlMakesurethatthecommentisaligned:dnl[--with-sayIncludesaysupport])dnlOtherwiseuseenable:dnlPHP_ARG_ENABLE(say,whethertoenablesaysupport,dnlMakesurethatthecommentisaligned:dnl[--enable-sayEnablesaysupport])其中,dnl是注释符号。Theabovecode说如果你写的扩展依赖其他扩展或者lib库,需要去掉PHP_ARG_WITH相关的代码注释。否则,取消注释PHP_ARG_ENABLE相关代码段。我们写的扩展不需要依赖其他扩展和lib库。Therefore,weremovethecommentinfrontofPHP_ARG_ENABLE.去掉注释后的代码如下:dnlIfyourextensionreferencessomethingexternal,usewith:dnlPHP_ARG_WITH(say,forsaysupport,dnlMakesurethatthecommentisaligned:dnl[--with-sayIncludesaysupport])dnlOtherwiseuseenable:PHP_ARG_ENABLE(say,whethertoenablesaysupport,Makesurethatthecommentisaligned:[--enable-sayEnablesaysupport])第三步:代码实现修改say.c文件。实现say方法。找到PHP_FUNCTION(confirm_say_compiled),在上面添加如下代码:PHP_FUNCTION(say){zend_string*strg;strg=strpprintf(0,"helloword");RETURN_STR(strg);}找到PHP_FE(confirm_say_compiled,在上面添加如下代码:PHP_FE(say,NULL)修改后的代码如下:constzend_function_entrysay_functions[]={PHP_FE(say,NULL)/*Fortesting,removelater.*/PHP_FE(confirm_say_compiled,NULL)/*Fortesting,removelater.*/PHP_FE_END/*Mustbethelastlineinsay_functions[]*/};/*}}}*/第四步:编译安装编译扩展如下:$phpize$./configure$make&&makeinstall修改php.ini文件,添加如下代码:[say]extension=say.so然后执行php-m命令,在输出内容中,会看到say字样Step5:calltest自己写一个脚本,调用say方法,看看输出是否符合预期输出内容:$php./test.php$helloword想深入了解PHP扩展的朋友,欢迎加入辛海龙老师的专栏id圈:PHP扩展开发零基础学习

最新推荐
猜你喜欢