LevelDB(动态链接) + PHP扩展 安装

/ 0评 / 0

因为撤离SAE的原因,所以...

配置方法是先安装大于3.9版本以上的cmake,Debian 9默认apt安装的版本是3.7的,安装好cmake后克隆levelDB项目:https://github.com/google/leveldb,用下面命令配置LevelDB,目的是生成动态链接版本:

cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON .

然后构建并安装:

cmake --build .

sudo make install

注意安装结果是so文件.

这样Level DB就已经完成了,Level DB比Redis好处是持久化,比SQL方便的地方就是简单,缺点就是数据多的时候,不好分类管理.另外Level DB单纯C++来说,也是很好访问的.

接着是PHP扩展,建议编译安装,因为系统带的非常老旧.我这里基于有php7.0以及php7.0-dev为例,安装这个服务,PHP扩展地址:https://github.com/reeze/php-leveldb

然后使用.configure => make => sudo make install就可以得到扩展模块了.

当然还要添加到php.ini配置里面.

最简单的测试.输出:string(5) "Value"

<?php



$db = new LevelDB("/tmp/test-db");



$db->set("Key", "Value");

var_dump($db->get("Key"));

$db->delete("Key");

最简单的C++例子.

#include <iostream>

#include <db.h>



using namespace std;



int main(int argc, char *argv[])

{

    leveldb::DB *db;

    leveldb::Status s ;

    leveldb::Options options;

    options.create_if_missing = true;



    string key = "username";

    string value = "mypass";

    string value_get;



    leveldb::DB::Open(options, "/tmp/test-db", &db);



    s = db->Put(leveldb::WriteOptions(), key, value);

    s = db->Get(leveldb::ReadOptions(), key, &value_get);



    cout << value_get << endl;



    delete db;



    return 0;

}

编译方法:

g++ -lleveldb -lpthread leveldb_test.cpp -I/usr/local/include/leveldb -Ofast -o leveldb_test

运行结果:

反复执行多次PHP脚本,这样就得到PHP的编译缓存,结果还是C语言快.(这不是废话吗,PHP的模块也是C写的.)

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注