Cassandra通过PHP [英] Cassandra via PHP
本文介绍了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屋!
查看全文