alfatraining / cassandra-session-handler-bundle
Symfony 4 的 Cassandra 会话处理器包
v2.0.2
2024-08-29 14:38 UTC
Requires
- php: >=8.0.0
- ext-cassandra: >=1.4.0
- datastax/php-driver: ^1.4
- psr/log: ^1.0
- symfony/framework-bundle: ^4.2
README
本 Symfony 4 包提供了一种将会话保存到 Cassandra 的会话处理器。
安装
- 将存储库和需求添加到
composer.json
{ "repositories": [ { "type": "vcs", "url": "git@github.com:alfatraining/cassandra-session-handler-bundle.git" } ], "require": { "alfatraining/cassandra-session-handler-bundle": "dev-master" } }
-
通过
composer update
或如果您不想更新,则通过composer update nothing
安装包。 -
在
app/AppKernel.php
中注册包
new Alfatraining\CassandraSessionHandlerBundle\AlfatrainingCassandraSessionHandlerBundle(),
- 将配置参数添加到您的
app/config/config.yml
(以下显示包默认值)并激活会话处理器
framework: session: handler_id: alfatraining_cassandra_session_handler.cassandra_session_handler alfatraining_cassandra_session_handler: keyspace: symfony2_sessions # Cassandra keyspace to use column_family: sessions # Cassandra table/column family to use session_lifetime: 84600 # session lifetime in seconds
- 将参数添加到
app/config/parameters.yml.dist
以配置 Cassandra 集群实例
parameters: # contact points can be 1) a single node (not advisable for Cassandra) cassandra_cluster.contact_points: localhost # or 2) a comma-separated list of nodes (mixed host names / IP addresses possible) cassandra_cluster.contact_points: localhost, 127.0.0.1, 172.18.1.10 # or 3) a native YAML array cassandra_cluster.contact_points: - localhost - 127.0.0.1 # of course, you may also write this using the inline style cassandra_cluster.contact_points: [localhost, 127.0.0.1] # optionally set the credentials to be used for connecting to the Cassandra cluster cassandra_cluster.credentials.username: cassandra cassandra_cluster.credentials.password: cassandra
在 Symfony 4 中,您可以使用包含逗号分隔值的字符串作为环境变量
# services.yaml parameters: cassandra_cluster.contact_points: '%env(string:CASSANDRA_CLUSTER_HOSTS)%'
# .env.local
CASSANDRA_CLUSTER_HOSTS=10.0.0.1,10.0.0.2,10.0.0.3
然后再次运行 composer install
或手动更新您的 parameters.yml
。
- 别忘了实际创建键空间和列族。此包中
Resources/doc/create_session_keyspace_and_table.sql
文件中可以找到所需的 CQL 示例。
如您在 Resources/config/services.yml
文件中所见,您需要在实例化会话处理器时传递一个 Cassandra\Cluster
(即使它看起来不是一个接口,它也是一个接口)实例。由于 DefaultCluster 有很多配置选项(对于 SSL、身份验证等等 - 更多信息请参阅 http://datastax.github.io/php-driver/api/Cassandra/Cluster/class.Builder/),您可以完全替换此类,并实例化自己的自定义集群类实例。下面是如何做:
- 将类名替换为您的
app/config/config.yml
文件中要使用的类名
parameters: cassandra_cluster.class: Namespace/To/Your/Own/Class
- 查看包的实现如何在
Lib/Cassandra/Cluster.php
文件中工作。