当通过cluster->connect()连接到集群时,php脚本挂起。
当我尝试使用nodejs驱动程序时:
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({
contactPoints: ['127.0.0.1'],
localDataCenter: 'datacenter1',
keyspace: 'test'
});
const query = 'SELECT * FROM mytable';
client.execute(query).then(console.log).catch( console.log );
我们得到以下输出:
ResultSet {
info: {
queriedHost: '127.0.0.1:9042',
triedHosts: { '127.0.0.1:9042': null },
speculativeExecutions: 0,
achievedConsistency: 10,
traceId: undefined,
warnings: undefined,
customPayload: undefined,
isSchemaInAgreement: true
},
rows: [ Row { id: 'test' } ],
rowLength: 1,
columns: [ { name: 'id', type: [Object] } ],
pageState: null,
nextPage: undefined,
nextPageAsync: undefined
}
当我们使用php时,它会挂起:
<?php
$cluster = \Cassandra::cluster()
->withContactPoints( '127.0.0.1' )
->withPort( 9042 )
->build();
// This will happen immediately
// var_dump( 'Built!' );exit;
$session = $cluster->connect( 'test' );
// This hangs. It never dumps 'Connected!'.
var_dump( 'Connected!' );exit;
var_dump( $session->execute( new \Cassandra\SimpleStatement( 'select * from mytable' ), array() ) );
以下是所需文件的附件。
index.php->https://pastebin.com/iihpjfpw
流浪汉档案->https://pastebin.com/bkpwynxy
cassandra.repo->https://pastebin.com/lbracy3f
索引.js->https://pastebin.com/tspc0blm
创建新文件夹“cassandratest”
将文件放入文件夹中
在“cassandratest”中创建名为“provision”的新目录
把cassandra.repo放进去
流浪汉
注:
这不是一个偶然的问题,因为在运行centos7.6的stage环境中也会出现同样的问题
环境:
centos 7.6版
cassandra 3.11.6本机协议v4
nodejs 12 nodejs cassandra驱动程序4.5.0
php 7.2 php cassandra驱动程序(最新版本,通过remi的yum install-y php72-php-pecl-cassandra.x86_安装)
vagrant 2.2.7 oracle virtualbox版本6.1.4 r136177(qt5.6.2)
1条答案
按热度按时间gcuhipw91#
看看你问的日期和症状,我认为你是击中了这个错误。
尝试升级
cassandra-cpp-driver
到v2.15.2,看看它是否工作。