Cassandra通过PHP [英] Cassandra via PHP

查看:124
本文介绍了Cassandra通过PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个客户端/服务器设置Cassandra的工作时通过Perl访问。我试图重做过程在PHP现在。我似乎无法调用任何函数对我的安装,而没有得到一个TSocket读0字节异常。下面是一个非常简单的示例:

  $ GLOBALS ['THRIFT_ROOT'] ='/ usr / local / src / thrift-0.8.0 / lib / php / src'; 

require_once $ GLOBALS ['THRIFT_ROOT']。'/ packages / cassandra / Cassandra.php';
require_once $ GLOBALS ['THRIFT_ROOT']。'/ packages / cassandra / cassandra_types.php';
require_once $ GLOBALS ['THRIFT_ROOT']。'/ transport / TSocket.php';
require_once $ GLOBALS ['THRIFT_ROOT']。'/ protocol / TBinaryProtocol.php';
require_once $ GLOBALS ['THRIFT_ROOT']。'/ transport / TFramedTransport.php';
require_once $ GLOBALS ['THRIFT_ROOT']。'/ transport / TBufferedTransport.php';

try {
$ socket = new TSocket('10 .127.24.19',9160);
$ transport = new TBufferedTransport($ socket,1024,1024);
$ protocol = new TBinaryProtocolAccelerated($ transport);
$ client = new cassandra_CassandraClient($ protocol);
$ transport-> open();

$ keyspace ='some_data';

$ client-> set_keyspace($ keyspace);

}
catch(TException $ tx)
{
error_log(print_r($ tx,true));
}

这是节俭的0.8.0,Cassandra 1.0,PHP 5.3.1。 / p>

解决方案

不要使用原始节俭,请改用库:





否则,你会碰到一个永无止境的getcha的列表。 p>

I have a client / server setup for Cassandra that works when accessed via Perl. Im trying to redo the process in PHP now. I can't seem to call any functions against my installation without getting a 'TSocket read 0 bytes' exception. Here is a sample that should be pretty straightforward:

$GLOBALS['THRIFT_ROOT'] = '/usr/local/src/thrift-0.8.0/lib/php/src';

require_once $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/Cassandra.php';
require_once $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/cassandra_types.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';

try {
 $socket = new TSocket( '10.127.24.19', 9160 );
 $transport = new TBufferedTransport( $socket, 1024, 1024 );
 $protocol = new TBinaryProtocolAccelerated( $transport );
 $client = new cassandra_CassandraClient( $protocol );
 $transport->open();

 $keyspace = 'some_data';

 $client->set_keyspace( $keyspace );

} 
catch (TException $tx)
{
   error_log( print_r( $tx, true ));
}  

This is thrift 0.8.0, Cassandra 1.0, PHP 5.3.1.

解决方案

Don't use raw thrift, use a library instead:

You will hit a never-ending list of gotcha's like this otherwise.

这篇关于Cassandra通过PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆