alfatraining/cassandra-session-handler-bundle

Symfony 4 的 Cassandra 会话处理器包

v2.0.2 2024-08-29 14:38 UTC

This package is auto-updated.

Last update: 2024-08-29 14:39:12 UTC


README

本 Symfony 4 包提供了一种将会话保存到 Cassandra 的会话处理器。

安装

  1. 将存储库和需求添加到 composer.json
    {
        "repositories": [
            {
                "type": "vcs",
                "url": "git@github.com:alfatraining/cassandra-session-handler-bundle.git"
            }
        ],
        "require": {
            "alfatraining/cassandra-session-handler-bundle": "dev-master"
        }
    }
  1. 通过 composer update 或如果您不想更新,则通过 composer update nothing 安装包。

  2. app/AppKernel.php 中注册包

    new Alfatraining\CassandraSessionHandlerBundle\AlfatrainingCassandraSessionHandlerBundle(),
  1. 将配置参数添加到您的 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
  1. 将参数添加到 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

  1. 别忘了实际创建键空间和列族。此包中 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/),您可以完全替换此类,并实例化自己的自定义集群类实例。下面是如何做:

  1. 将类名替换为您的 app/config/config.yml 文件中要使用的类名
    parameters:
        cassandra_cluster.class: Namespace/To/Your/Own/Class
  1. 查看包的实现如何在 Lib/Cassandra/Cluster.php 文件中工作。