Ubuntu下用C编写PHP扩展全程实录

dreamszhu 2 年之前

这里我们是编译成可动态加载的 php_kdb.so。
安装php5-dev

sudo apt-get install php5-dev

下载PHP源码

sudo apt-get source php5

创建模块模型

cd ./php-5.2.9/ext
sudo ./ext_skel --extname=kdb

打开 php_kdb.h 加入函数声明:

PHP_FUNCTION(confirm_kdb_compiled);
PHP_FUNCTION(kdb_add);

打开 kdb.c 加入以下内容:

zend_function_entry kdb_functions[] = {
    PHP_FE(confirm_kdb_compiled,    NULL) 
    PHP_FE(kdb_add,   NULL) 
    {NULL, NULL, NULL} 
};

然后在 kdb.c 的最末尾书写kdb_add函数的内容:

PHP_FUNCTION(kdb_add)
{
    long int a, b, c;


    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {
        return;
    }


    c = a + b;
    RETURN_LONG(c);
}

保存执行一下命令:

phpize
./configure --with-php-config=/usr/local/bin/php-config
make
sudo make install

如果都没有错误,那接着然后重启动apache,通过phpinfo就可以看到kdb的支持了。
如果你没有安装Apache2和PHP5,执行命令:

sudo apt-get install apache2
sudo apt-get install php5

整体来说 C 扩展 PHP 还是很方便的。

你的这个是做用于哪方面用的,也是开源的 chat 系统么?

chat里面不需要这个,这个打算做kdb+这个内存数据库的扩展用。

内存数据库? 原生的么,还是用的现成的库?

发表讨论

在回复之前你需要先进行登录
记住我的登录状态 (忘记密码)