手机版

如何用C语言编写服务器端编程语言(专业超文本预处理器的缩写)扩展的详解

时间:2021-11-19 来源:互联网 编辑:宝哥软件园 浏览:

1:预定义在家目录,也可以其他任意目录,写一个文件,例如caleng_module.def内容是你希望定义的函数名以及参数:int a(int x,int y)字符串b(字符串字符串,int n)2:到服务器端编程语言(专业超文本预处理器的缩写)源码目录的外面的(外部的简写)目录#cd /usr/local/php-5.4.0/ext/执行命令,生成对应扩展目录#./ext _ skel-ext name=calen _ module-proto=/home/hm/calen _ module。def 3:修改config.m4去掉动态噪声限制器(动态噪声限制器)的注释PHP_ARG_ENABLE(caleng_module,是否启用校准模块支持,确保注释对齐:[-ENABLE-caleng _ module ENABLE _ caleng _ module support]]4:修改caleng_module.c复制代码代码如下:/* {{{ proto int a(int x,int y)*/PHP _ FUNCTION(a){ int argc=ZEND _ NUM _ ARGS();int x;int y;int z;if(Zend _ parse _ parameters(argc TSRMLS _ CC,' ll ',x,y)==FAILURE)返回;z=x y;RETURN _ LONG(z);}/* } } } *//* { { { proto string b(string str,int n)*/PHP _ FUNCTION(b){ char * str=NULL;int argc=ZEND _ NUM _ ARGS();int str _ len长n;char *结果;char * ptrint结果_ length if(Zend _ parse _ parameters(argc TSRMLS _ CC,' sl ',str,str_len,n)=FAILURE)返回;result _ length=str _ len * n;result=(char *)emalloc(result _ length 1);ptr=结果;while (n - ) { memcpy(ptr,str,str _ len);ptr=str _ len } * ptr=' \ 0 RETURN _ STRINGL(结果,结果长度,0);}/* }}} */5:生成扩展库#cd ./caleng _ module #/usr/local/PHP/bin/phpize # ./config-with-PHP-config=/usr/local/PHP/bin/PHP-config # make # make install(9500 . 163.com)

6:到服务器端编程语言(专业超文本预处理器的缩写)的对应延长目录如上图所示# CD/usr/local/PHP/lib/PHP/extensions/no-debug-non-zts-20100525/改目录下有生成的caleng _ module.so文件7:修改php.iniphp.ini如果找不到可以从phpinfo()打出的信息看到#cd /usr/local/php/lib/php.ini增加扩展信息extension=caleng _ module。所以8:重启Apache #/usr/local/Apache 2/bin/Apache CTL重启9:检查加载/usr/local/PHP/bin/PHP-m 10: PHP调用复制代码代码如下:echo a(1,2);输出3就说明成功了!=================================下面是原文Linux操作系统操作系统下用C开发服务器端编程语言(专业超文本预处理器的缩写)扩展一、首先下载服务器端编程语言(专业超文本预处理器的缩写)源码包,假设源码包目录为:/software/php-5.2.13一、首先下载服务器端编程语言(专业超文本预处理器的缩写)源码包,假设源码包目录为:/软件/PHP-5。2 .13 # CD/软件/PHP-5。2 .13/分机二、假设我们要开发一个名为校准模块的扩展,该扩展包含两个函数:a -处理两个整型相加和b-处理字符串重复输出;1、首先编写一个函数定义文件,该文件编写函数原型后缀为def,假设为:caleng _ module。定义a(int x,int y)字符串b(字符串,int n)2,通过扩展骨架生成器,将在外面的(外部的简写)目录下自动建立扩展目录caleng_module# ./ext _ skel-ext name=caleng _ module-proto=caleng _ module。def 3、修改配置文件: # vim/软件/PHP-5。2 .13/ext/caleng _ module/config。M4,将如下行的注释标签dnl '去掉,修改后如下所示:PHP_ARG_ENABLE(myfunctions,是否启用我的功能支持,确保注释对齐:[ - enable-myfunctions启用我的功能支持])4,完善函数a和b的功能: # vim/软件/PHP-5。2 .13/ext/caleng _ module/caleng _ module。cphp _ FUNCTION(a){ int x,y,z;int argc=ZEND _ NUM _ ARGS();if(Zend _ parse _ parameters(argc TSRMLS _ CC,' ll ',x,y)==FAILURE)返回;z=x y;RETURN _ LONG(z);} PHP _ FUNCTION(b){ char * str=NULL;int argc=ZEND _ NUM _ ARGS();int str _ len长n;char *结果;char * ptrint结果_ length if(Zend _ parse _ parameters(argc TSRMLS _ CC,' sl ',str,str_len,n)=FAILURE)返回;result _ length=str _ len * n;result=(char *)emalloc(result _ length 1);ptr=结果;while (n - ) { memcpy(ptr,str,str _ len);ptr=str _ len } * ptr=' \ 0 RETURN _ STRINGL(结果,结果长度,0);}三、编译安装,假设服务器端编程语言(专业超文本预处理器的缩写)的安装目录为:/usr/localhost/web服务器/PHP # CD/软件/PHP-5。2 .13/ext/caleng _ module #/usr/localhost/web服务器/PHP/bin/phpize # ./config-with-PHP-config=/usr/localhost/web服务器/PHP/bin/PHP-config # make # make install现在将在/usr/local/web server/PHP/lib/PHP/extensions/no-debug-non-zts-20060613目录下生成caleng _ module.so文件在php.ini配置文件中加入:扩展=caleng_module.so .搞定收工

版权声明:如何用C语言编写服务器端编程语言(专业超文本预处理器的缩写)扩展的详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。