m6web / cassandra-bundle
此包已被放弃,不再维护。没有建议的替代包。
基于 datastax/php-driver 的 Symfony2 扩展包
v3.0.0
2020-03-16 14:11 UTC
Requires
- php: >=7.1
- ext-cassandra: ^1.3
- symfony/config: ^3.4 || ^4.0
- symfony/dependency-injection: ^3.4 || ^4.0
- symfony/event-dispatcher: ^3.4 || ^4.0
- symfony/http-kernel: ^3.4 || ^4.0
Requires (Dev)
- atoum/atoum: ^3.4.1
- datastax/php-driver: ^1.3.2
- m6web/coke: ^2.2
- m6web/symfony2-coding-standard: ^3.3
- symfony/yaml: ^3.4 || ^4.0
README
CassandraBundle 提供一个作为 Symfony 服务器的 Cassandra 客户端。
安装
注意:您需要安装官方的 datastax php driver 扩展
使用 composer
composer require m6web/cassandra-bundle
然后确保您的应用中注册了此包
// config/bundles.php return [ \M6Web\Bundle\CassandraBundle\M6WebCassandraBundle::class => ['all' => true], ];
用法
在您的配置文件中添加 m6web_cassandra
部分。以下是所需的最低配置。
m6web_cassandra: clients: myclient: contact_endpoints: - 127.0.0.1 - 127.0.0.2 - 127.0.0.3
然后您可以向容器请求您的客户端
$cassandra = $this->get('m6web_cassandra.client.myclient'); $prepared = $cassandra->prepare("INSERT INTO test (id, title) VALUES(?, ?)"); $batch = new Cassandra\BatchStatement(Cassandra::BATCH_LOGGED); $batch->add($prepared, ['id' => 1, 'title' => 'my title']); $batch->add($prepared, ['id' => 2, 'title' => 'my title 2']); $cassandra->execute($batch); $statement = new Cassandra\SimpleStatement('SELECT * FROM test'); $result = $cassandra->execute($statement); foreach ($result as $row) { // do something with $row } $statement = new Cassandra\SimpleStatement('SELECT * FROM test'); $result = $cassandra->executeAsync($statement); // do something while cassandra query running foreach($result->get() as $row) { // do something with row }
该包提供了一个用于从时间uuid字符串中提取日期时间的工具类。
use M6Web\Bundle\CassandraBundle\Cassandra\Type as TypeUtils; $datetime = TypeUtils::getDateTimeFromTimeuuidString('513a5340-6da0-11e5-815e-93ec150e89fd'); if (is_null($datetime)) { // something is wrong with supplied uuid } else { echo $datetime->format(\DateTime::W3C); // 2015-10-08 11:38:22+02:00 }
数据收集器
当启用 Symfony 分析器时,数据收集器可用。收集器允许您查看以下 Cassandra 数据
- 键空间
- 命令名称
- 命令参数
- 执行时间
- 执行选项覆盖(一致性、序列一致性、页面大小和超时)
注意:数据收集器中报告的时间可能不是您使用异步调用(executeAsync
和 prepareAsync
)时的实际执行时间
配置参考
m6web_cassandra: dispatch_events: true # By default event are triggered on each cassandra command clients: client_name: persistent_sessions: true # persistent session connection keyspace: "mykeyspace" # default is null, optional keyspace to connect load_balancing: "round-robin" # round-robin or dc-aware-round-robin dc_options: # required if load balancing is set to dc-aware-round-robin local_dc_name: "testdc" host_per_remote_dc: 3 remote_dc_for_local_consistency: false default_consistency: "one" # 'one', 'any', 'two', 'three', 'quorum', 'all', 'local_quorum', 'each_quorum', 'serial', 'local_serial', 'local_one' default_pagesize: 10000 # ~ to disable pagination contact_endpoints: # required list of ip to contact - 127.0.0.1 contact_whitelist: # if specified cassandra will connect only to this datacenters/hosts dc: - "testdc" host: - 172.0.0.1 contact_blacklist: # if specified cassandra will not connect to this datacenters/hosts dc: - "blacklisted_testdc" host: - 6.6.6.6 port_endpoint: 9042 # cassandra port token_aware_routing: true # Enable or disable token aware routing credentials: # cassandra authentication username: "" # username for authentication password: "" # password for authentication ssl: false # set up ssl context default_timeout: null # default is null, must be an integer if set timeout: connect: 5 request: 5 retries: sync_requests: 0 # Number of retries for synchronous requests. Default is 0, must be an integer if set client_name: ...
贡献
首先,感谢您的贡献!
以下是您在维护者接受和合并您的请求之前应遵循的几条规则,以便更容易地进行代码审查。
- 您必须遵循 Symfony2 编码标准:您可以使用
./bin/coke
进行验证 - 您必须运行测试
- 您必须编写或更新测试
- 您必须编写或更新文档
运行测试
安装 composer 开发依赖
$ composer install --dev
然后使用 atoum 单元测试框架运行测试
./bin/atoum