【发布时间】:2016-03-01 19:25:31
【问题描述】:
我是 cassandra 的新手,但具有 Nosql 和其他技术的高可用性背景。几天前我安装了 Cassandra 3.0,但听起来 Datastax php 驱动程序根本不支持它! 于是我降级到 2.1.11 版本,写了一个简单的 php 脚本,使用 Datastax php-driver 来查询它,它工作正常。
<?php
try {
$cluster = Cassandra::cluster()
->withContactPoints('127.0.0.1')
->build();
$keyspace = 'mykeysssspace';
$session = $cluster->connect($keyspace);
$statement = new Cassandra\SimpleStatement('SELECT userid, created_date, email FROM users');
$future = $session->executeAsync($statement);
$result = $future->get();
foreach ($result as $row) {
printf("userId: %s, email: %s\n", $row['userid'], $row['email']);
}
}catch(Exception $e) {
print $e->getMessage();
}
?>
然后我在同一台机器(Ubuntu 11.10!)中使用不同的 IP 地址启动了两个 Cassandra 实例。 然后把php代码改成:
$cluster = Cassandra::cluster()
->withContactPoints('127.0.0.1', '127.0.0.2')
->build();
问题是,只要两个实例都在运行,一切都按预期工作并且 php 输出预期结果。但是当我停止其中一个实例(不管是哪一个)时,它会给出
当前策略中的所有主机都已尝试但不可用或失败
即使我把它改回
$cluster = Cassandra::cluster()
->withContactPoints('running_instance_ip')
->build();
它给了我同样的错误。但是 cqlsh 在任何情况下都有效。
是 Datastax php 驱动的问题吗?
【问题讨论】:
标签: php cassandra datastax-php-driver