Я только начал использовать Riak (для проекта колледжа), и мы получили машину CentOS с Riak 1.4.2.
Я сделал ведро под названием «testbucket» и в нем ключ, пара значений «helloworld», «Hello World!» используя curl. Затем я попытался извлечь данные с помощью curl и браузера, и все было в порядке, я получил «Hello World!» назад, как задумано.
Проблема заключалась в том, что мне нужно сделать веб-проект с использованием PHP, и я застрял в следующем:
<?php
require_once('riak-php-client-master/src/Basho/Riak/Riak.php');
require_once('riak-php-client-master/src/Basho/Riak/Bucket.php');
require_once('riak-php-client-master/src/Basho/Riak/Exception.php');
require_once('riak-php-client-master/src/Basho/Riak/Link.php');
require_once('riak-php-client-master/src/Basho/Riak/MapReduce.php');
require_once('riak-php-client-master/src/Basho/Riak/Object.php');
require_once('riak-php-client-master/src/Basho/Riak/StringIO.php');
require_once('riak-php-client-master/src/Basho/Riak/Utils.php');
require_once('riak-php-client-master/src/Basho/Riak/Link/Phase.php');
require_once('riak-php-client-master/src/Basho/Riak/MapReduce/Phase.php');
$connection = new Basho\Riak\Riak('192.168.56.12', 10018);
$bucket = new Basho\Riak\Bucket($connection, 'testbucket');
$object = $bucket->get('helloworld');
var_dump($object);
?>
var_dump печатает следующее:
object(Basho\Riak\Object)[3]
protected 'meta' =>
array (size=0)
empty
protected 'indexes' =>
array (size=0)
empty
protected 'autoIndexes' =>
array (size=0)
empty
public 'client' =>
object(Basho\Riak\Riak)[1]
public 'host' => string '192.168.56.12' (length=13)
public 'port' => int 10018
public 'prefix' => string 'riak' (length=4)
public 'mapred_prefix' => string 'mapred' (length=6)
public 'indexPrefix' => string 'buckets' (length=7)
public 'clientid' => string 'php_us1pa7' (length=10)
public 'r' => int 2
public 'w' => int 2
public 'dw' => int 2
public 'bucket' =>
object(Basho\Riak\Bucket)[2]
public 'client' =>
object(Basho\Riak\Riak)[1]
public 'host' => string '192.168.56.12' (length=13)
public 'port' => int 10018
public 'prefix' => string 'riak' (length=4)
public 'mapred_prefix' => string 'mapred' (length=6)
public 'indexPrefix' => string 'buckets' (length=7)
public 'clientid' => string 'php_us1pa7' (length=10)
public 'r' => int 2
public 'w' => int 2
public 'dw' => int 2
public 'name' => string 'testbucket' (length=10)
public 'r' => null
public 'w' => null
public 'dw' => null
public 'key' => string 'helloworld' (length=10)
public 'jsonize' => boolean true
public 'headers' =>
array (size=10)
'http_code' => int 200
'x-riak-vclock' => string 'a85hYGBgzGDKBVIcKlYHQkK6OW9mMCUy5bEyBGgwn+PLAgA=' (length=48)
'vary' => string 'Accept-Encoding' (length=15)
'server' => string 'MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact)' (length=57)
'link' => string '</riak/testbucket>; rel="up"' (length=28)
'last-modified' => string 'Mon, 15 Dec 2014 09:39:28 GMT' (length=29)
'etag' => string '"y0akdKQCeEWM2HBgOp0tK"' (length=23)
'date' => string 'Mon, 15 Dec 2014 13:56:54 GMT' (length=29)
'content-type' => string 'text/html' (length=9)
'content-length' => string '38' (length=2)
public 'links' =>
array (size=0)
empty
public 'siblings' => null
public 'exists' => boolean true
public 'data' => null
Конечно, попытка сделать $ object-> getData () приводит к исключению.
Я полностью сбит с толку, поскольку данные явно существуют (проверено как с помощью curl, так и через браузер), и все же я не могу получить к ним доступ таким образом. Это кажется странным, особенно потому, что строка «content-length» => string «38» (length = 2) »говорит о том, что в теле должно быть определенное количество данных.
поскольку get
для JSON-кодированных данных, в соответствии с документы, попробуйте использовать getBinary
Других решений пока нет …