php 的 rocksdb 扩展,如何编译安装使用 ?
发布于 作者:苏南大叔 来源:程序如此灵动~苏南大叔在本文中,将要讲述php
和rocksdb
扩展的事情。首先,必须承认一点,这个rocksdb
是个非常非常小众的数据库。所以,在官方层面上,是没有专门用于php
的rocksdb
扩展的。在github
上面相关的搜索结果中,星值也都不多。对比实验了相关几个项目后,苏南大叔选了一个项目源码作为本文中的内容。
本文测试环境是:mac10.14.2
/php7.2.7
/phpize7/php-rocksdb
。
安装rocksdb
因为本文的测试环境是mac
,所以直接使用下面的命令,略过了本文复杂的编译过程。
brew install rocksdb
详细内容,请点击这里:
下载源码
在github
上面看相关rocksdb
的扩展信息的话,没有太权威的结果,在pecl
网站上面也没有看到合适的rocksdb
扩展。所以,基本上是硬要挑选一个扩展的节奏... 最终,苏南大叔选择的这个php
的rocksdb
的扩展地址如下所示,选择的理由是:能正常编译通过使用,而且相对而言似乎是有更新的(其实没有)。所以,这个基本上是没得选择。
使用git
克隆源码的方式如下:
git clone https://github.com/phpize7/php-rocksdb.git
编译安装rocksdb
扩展
本文的编译环境是mac
,编译过程是非常经典的php
扩展编译过程,编译的过程可以说是毫无波澜。
cd php-rocksdb
phpize
./configure
make
make install
然后就可以在扩展目录下面得到rocksdb.so
文件了。然后在php.ini
里面启用即可。在本例中,rocksdb.so
文件的生成位置是:
/usr/local/Cellar/php/7.2.7/pecl/20170718/
修改php.ini
文件:
extension=rocksdb.so;
重启php
服务生效:
brew services restart php
使用范例
下面的代码是个简单的使用范例,注意需要指定rocksdb
的目录路径,比如如下代码中的rocksdb-basic.test-db3
。这是个目录的名字。不存在的话,会自动初始化一个出来。
$rocksdb_path = dirname(__FILE__) . '/rocksdb-basic.test-db3';
$db = new RocksDb\RocksDb($rocksdb_path, ['create_if_missing' => true]);
$db->put('key', 'value');
$db->get('key');
$db->delete('key');
$db->close();
注意,页面代码结束时,要及时close()
。否则,会报错。例如:
Fatal error: Uncaught RocksDb\Exception: IO error: While lock file: /code/www/sunan/rocksdb/rocksdb-basic.test-db3/LOCK: Resource temporarily unavailable
相关链接
更多使用方法,可以查看官方的test
目录里面的范例:
rocksdb
的图形化管理界面:
总结
目前来看,rocksdb
的php
扩展中包含的函数,挺简单的。就put()
/get()
/delete
/,以及open()
/close()
这几种。当然,本文中,仅仅是最简单的示意函数罢了。
想知道更多的rocksdb
相关文章嘛?请点击下面的链接:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。