php调用c接口无错版介绍

 更新时间:2014年03月11日 09:54:45   作者:  
本篇文章主要是对php调用c接口无错版进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

1.首先是要安装好PHP

2.进入PHP的下载解压目录下的ext目录
#cd /root/php-5.3.6/ext
#./ext_skel --extname=hmc

说明:
./ext_skel --extname=module_name
module_name是你自己可以选择的扩展模块的名字,例如我选择的hmc。执行工具后会自动在ext目录下建立你选择的module_name名字的目录,里面已经生成了相关的代码,这些代码中只需要调整config.m4文件中的三行注释就可以正常的编译带这个自定义扩展模块的php了。

3.修改config.m4
可以将生成的module目录复制到任意希望放置的地方
进入hmc目录
vi config.m4
使用文本编辑器打开config.m4文件
根据你自己的选择将
dnl PHP_ARG_WITH(hmc, for hmc support,
dnl Make sure that the comment is aligned:
dnl [ --with-hmc Include hmc support])
修改成
PHP_ARG_WITH(hmc for hmc support,
Make sure that the comment is aligned:
[ --with-hmc Include hmc support])
或者将
dnl PHP_ARG_ENABLE(hmc, whether to enable hmc support,
dnl Make sure that the comment is aligned:
dnl [ --enable-hmc Enable hmc support])
修改成
PHP_ARG_ENABLE(hmc, whether to enable hmc support,
Make sure that the comment is aligned:
[ --enable-hmc Enable hmc support])

一般我会选择后者,然后保存退出。

4.修改.c和.h文件代码
Vi hmc.c
将文件其中的下列代码进行修改
/* Every user visible function must have an entry in hmc_functions[].
*/
const zend_function_entry hmc_functions[] = {
PHP_FE(say_hello, NULL) /* 添加着一行代码 */
PHP_FE(confirm_hmc_compiled, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in hmc_functions[] */
};

在文件的最后添加下列代码
PHP_FUNCTION(say_hello)
{
zend_printf("hello world\n");
}
保存文件退出

vi php_hmc.h
在文件中PHP_FUNCTION(confirm_hmc_compiled);一行前面添加下面的代码
PHP_FUNCTION(say_hello);
保存文件退出

5.编译安装
#phpize
#./configure --enable-hmc
#make
#make install
应该在php的modules目录下有一个hmc.so文件,不同的机器位置会不一样



6.修改PHP配置
编辑php.ini,把扩展加入进去:
在[PHP]模块下增加:
extension = hmc.so
重启Httpd
#service httpd restart

7.php调用
建立一个c.php文件在对应的www目录下
<?
say_hello();
?>
这时浏览器应该输出:
hello world

8.调试
可以在命令行下输入
#php –q c.php
需要进入当前的www目录下

查看是否安装好模块可以用phpinfo()



也可以适用php -m命令
先用
#which php
找到php所在目录,不同机器目录不一样
#/usr/bin/php -m


9.带参数的函数
Vi hmc.c
修改最后的say_hello函数内容如下:
PHP_FUNCTION(say_hello)
{
zval **yourname;
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &yourname) == FAILURE)
{
WRONG_PARAM_COUNT;
}
zend_printf("hello world, %s\n", Z_STRVAL_PP(yourname));
}

修改c.php为
<?
say_hello(“清清月儿");
?>

相关文章

  • PHP中fwrite与file_put_contents性能测试代码

    PHP中fwrite与file_put_contents性能测试代码

    这里测试的是往文件中写一百万行记录,如果数据量很小,比如1000条左右的记录,可能差距不大
    2013-08-08
  • 利用PHP实现RPC的代码示例

    利用PHP实现RPC的代码示例

    RPC是一种计算机通信协议,用于使一个计算机程序可以调用另一个运行在不同计算机上的程序的过程或函数,并且无需了解底层网络细节,本文给大家详细介绍了如何利用PHP实现RPC,需要的朋友可以参考下
    2023-10-10
  • php抓取https的内容的代码

    php抓取https的内容的代码

    有时候需要获取https网页的内容,下面得方法,可以参考下。
    2010-04-04
  • 2020最新版 PhpStudy V8.1版本下载安装使用详解

    2020最新版 PhpStudy V8.1版本下载安装使用详解

    这篇文章主要介绍了2020最新版 PhpStudy V8.1版本下载安装使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • PHP开发中AJAX技术的简单应用

    PHP开发中AJAX技术的简单应用

    这篇文章主要介绍了PHP开发中AJAX技术的简单应用,简单对ajax的执行原理、实际应用作介绍,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • php探针不显示内存解决方法

    php探针不显示内存解决方法

    在本篇文章里小编给大家整理的是关于php探针不显示内存的相关知识点内容以及解决方法,需要的朋友们参考下。
    2019-09-09
  • PHP number_format函数原理及实例解析

    PHP number_format函数原理及实例解析

    这篇文章主要介绍了PHP number_format函数原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • PHP获得数组交集与差集的方法

    PHP获得数组交集与差集的方法

    这篇文章主要介绍了PHP获得数组交集与差集的方法,实例分析了array_intersect与array_diff方法在求数组交集与差集时的使用技巧,需要的朋友可以参考下
    2015-06-06
  • php获取当前网址url并替换参数或网址的方法

    php获取当前网址url并替换参数或网址的方法

    今天在项目中用到的两个函数,自己写了下,备用,需要的朋友也可以直接使用了,推荐第一个函数为获取,后面为相关的处理参数。
    2010-06-06
  • PHP原型模式Prototype Pattern的使用介绍

    PHP原型模式Prototype Pattern的使用介绍

    这篇文章主要介绍了PHP原型模式Prototype Pattern的使用,原型模式是一种创建型模式,它可以通过复制现有对象来创建新的对象,而无需知道具体的创建过程
    2023-03-03

最新评论