Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

CodeLieutenant/scylladb-php-driver

 
 

Repository files navigation

Build Status

A modern,feature-rich and highly tunable PHP client libraryforScyllaDB andApache Cassandra 3.0+ using exclusively Cassandra's binary protocol.

This is a wrapper around the [ScyllaDB C/C++ Driver].

Getting the Driver

Binary versions of the driver, available for Linux systems and officialy supported versions of PHP (8.1 and 8.2), can beobtained from GitHub Releases (soon).

You're also can compile the driver by yourself or use Dockerfile with a pre-set environment to run your tests.

What's new in v1.2.0/v1.3.8

Last Development Status

v1.3.8

  • Migration from C to C++
  • Removing PHP Build system in favor of CMake
  • UpgradedCassandra\Cluster\Builder class to new PHP argument parsing API
  • Reduce memory usage fromCassandra\Cluster\Builder
  • Migrate from Behat to PestPHP
  • Migrated from TravisCI to Github Actions.

Compatibility

This driver works exclusively with the Cassandra Query Language v3 (CQL3) andCassandra's native protocol. The current version works with:

  • ScyllaDB 4.4.x and 5.x +
  • Apache Cassandra versions 3.0+
  • PHP 8.1 and 8.2
  • 64-bit (x64)
  • Thread safe (TS) and non-thread safe (NTS)
  • Compilers: GCC 13.0+, Clang 16+ and c++23

Getting Help

  • If you're able to fix a bug yourself, you canfork the repositoryandsubmit a pull request with the fix.
  • If you're not able to fix a bug yourself,pleaseopen an issue , describe it with the most detailspossible and wait until one of our maintainers join the conversation.

Quick Start

<?php$cluster   = Cassandra::cluster()// connects to localhost by default                 ->build();$keyspace  ='system';$session   =$cluster->connect($keyspace);// create session, optionally scoped to a keyspace$statement =newCassandra\SimpleStatement(// also supports prepared and batch statements'SELECT keyspace_name, columnfamily_name FROM schema_columnfamilies');$querySent =$session->execute($statement);$result    =$querySent->get();// wait for the result, with an optional timeoutforeach ($resultas$row) {// results and rows implement Iterator, Countable and ArrayAccessprintf("The keyspace %s has a table called %s\n",$row['keyspace_name'],$row['columnfamily_name']);}

Installation

Before you compile your driver, first check if yourphp andphp-config matches the supported versions. If not,please checkout to the available versions.

sudo update-alternatives --config phpsudo update-alternatives --config php-config

Supported Versions: 8.1 and 8.2.

Next you will learn how to build the driver to:

  • Release/Production
  • Debug/Development
  • Optimized for Production (CAREFUL!!)

BEFORE YOU START

!Make sure first you cloned the repository with --recursive flag!

!Make sure you first install LibUV and LibCassandra/LibScyllaDB!

Installing LibUV

Install LibUV from your package manager. -> Preferred Way

Installing From Source

git clone --depth 1 -b v1.46.0 https://github.com/libuv/libuv.git \&&cd libuv \&& mkdir build \&&cd build \&& cmake -DBUILD_TESTING=OFF -DBUILD_BENCHMARKS=OFF -DLIBUV_BUILD_SHARED=ON CMAKE_C_FLAGS="-fPIC" -DCMAKE_BUILD_TYPE="RelWithInfo" -G Ninja .. \&& ninja install

Installing LibCassandra/LibScyllaDB

Installing From Source (Only Way to get the latest version)

# The only difference between libscylladb and libcassandra is the name of the git repository.git clone --depth 1 https://github.com/scylladb/cpp-driver.git scyladb-driver \&&cd scyladb-driver \&& mkdir build \&&cd build \&& cmake -DCASS_CPP_STANDARD=17 -DCASS_BUILD_STATIC=ON -DCASS_BUILD_SHARED=ON -DCASS_USE_STD_ATOMIC=ON -DCASS_USE_TIMERFD=ON -DCASS_USE_LIBSSH2=ON -DCASS_USE_ZLIB=ON CMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC -Wno-error=redundant-move" -DCMAKE_BUILD_TYPE="RelWithInfo" -G Ninja .. \&& ninja install

CMAKE Options and Presets

We provide common setups using CMake Presets. You can use them by passing the preset name to CMake:

  • Release
  • RelWithInfo
  • CI (Used by GitHub Actions)
  • Debug
  • ReleaseLibCassandra (Release with LibCassandra)
option(PHP_SCYLLADB_ENABLE_SANITIZERS "Enable sanitizers" OFF)option(PHP_SCYLLADB_ENABLE_COVERAGE "Enable coverage" OFF)option(PHP_SCYLLADB_OPTIMISE_FOR_CURRENT_MACHINE "Optimise for current machine" OFF)option(PHP_SCYLLADB_LIBUV_STATIC "Statically link libuv" OFF)option(PHP_SCYLLADB_LIBUV_FROM_SRC "Build LibUV from Source" OFF)option(PHP_SCYLLADB_LIBSCYLLADB_STATIC "Statically link LibScyllaDB" OFF)option(PHP_SCYLLADB_LIBSCYLLADB_FROM_SRC "Build LibScyllaDB from Source" OFF)option(PHP_SCYLLADB_USE_LIBCASSANDRA "Use DataStax LibCassandra instead of LibScyllaDB" OFF)option(PHP_SCYLLADB_LIBCASSANDRA_STATIC "Statically link LibCassandra" OFF)option(PHP_SCYLLADB_LIBCASSANDRA_FROM_SRC "Build LibCassandra from Source" OFF)

Compiling Release Build

This build you can use it for Production purposes.

To build your Driver, you should first download a few dependencies:

Debian/Ubuntu

apt install -y python3 python3-pip unzip mlocate build-essential ninja-build libssl-dev libgmp-dev zlib1g-dev openssl libpcre3-dev php-devpip3 install cmake# Single Lineapt install -y python3 python3-pip unzip mlocate build-essential ninja-build libssl-dev libgmp-dev zlib1g-dev openssl libpcre3-dev php-dev&& pip3 install cmake

After that, you can run the build command inside the repository root folder:

cmake --preset Release&&cd out/Release&& sudo ninja install

ninja install needs root privileges.

After compiled, you will be at directoryscylladb-php-driver/out/Release and at this folder you will need to movethecassandra.so andcassandra.ini to PHP respective folders.

# current directory: scylladb-php-driver/out/Release# PHP 8.1sudo cp ../../cassandra.ini /etc/php/8.1/cli/conf.d/10-cassandra.inisudo cp cassandra.so /usr/lib/php/20210902/cassandra.so# PHP 8.2sudo cp ../../cassandra.ini /etc/php/8.2/cli/conf.d/10-cassandra.inisudo cp cassandra.so /usr/lib/php/20220829/cassandra.so

Compiling Development Build

If you want to contribute to the project, you should follow the steps below.

Debian/Ubuntu

apt update -yapt upgrade -yapt install -y python3 python3-pip unzip mlocate build-essential ninja-build libssl-dev libgmp-dev zlib1g-dev openssl libpcre3-devpip3 install cmake cqlsh# CQL Shell - to connect into your ScyllaDB Clusterinstall-php-extensions intl zip pcntl gmp composerapt-get clean# Single Lineapt update -y&& apt upgrade -y&& apt install -y python3 python3-pip unzip mlocate build-essential ninja-build libssl-dev libgmp-dev zlib1g-dev openssl libpcre3-dev&& pip3 install cmake cqlsh&& install-php-extensions intl zip pcntl gmp composer&& apt-get clean

After that, you can run the build command inside the repository root folder:

cmake --preset Debug&&cd out/Debug&& ninja

We have a "debug.php" file in the root folder that you can use it for try connection withthe ScyllaDB Cluster (localhost) and check if is everything ok after change the source code.

Also you can run the PestPHP test suits inside the project and check if the functions are working as expected.

## Debug Base Commandphp -d"extension=$(pwd)/out/Debug/cassandra.so" debug.php## PestPHP Test Suite./vendor/bin/pest -d"extension=$(pwd)/out/Debug/cassandra.so"

Compiling Optimized Build

The "optimized build" brings a flag that makes the driver runs perfectly with your CPU. So, if you will use it, rememberto build it inside the environment that you will use it.

Debian/Ubuntu

apt install -y python3 python3-pip unzip mlocate build-essential ninja-build libssl-dev libgmp-dev zlib1g-dev openssl libpcre3-dev php-devpip3 install cmake# Single Lineapt install -y python3 python3-pip unzip mlocate build-essential ninja-build libssl-dev libgmp-dev zlib1g-dev openssl libpcre3-dev php-dev&& pip3 install cmake

The only difference between theRelease andOptimized is a flagcalled-DPHP_SCYLLADB_OPTIMISE_FOR_CURRENT_MACHINE=ON.

cmake --preset Release -DPHP_SCYLLADB_OPTIMISE_FOR_CURRENT_MACHINE=ON&&cd out/Release&& sudo ninja install

ninja install needs root privileges.

After compiled, you will be at directoryscylladb-php-driver/out/Release and at this folder you will need to movethecassandra.so andcassandra.ini to PHP respective folders.

# current directory: scylladb-php-driver/out/Release# PHP 8.1sudo cp ../../cassandra.ini /etc/php/8.1/cli/conf.d/10-cassandra.inisudo cp cassandra.so /usr/lib/php/20210902/cassandra.so# PHP 8.2sudo cp ../../cassandra.ini /etc/php/8.2/cli/conf.d/10-cassandra.inisudo cp cassandra.so /usr/lib/php/20220829/cassandra.so

Contributing

Read our contribution policy for a detailed descriptionof the process.

Running tests

Soon.

Copyright

© DataStax, Inc.

Licensed under the Apache License, Version 2.0 (the “License”); you may not usethis file except in compliance with the License. You may obtain a copy of theLicense at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributedunder the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied. See the License for thespecific language governing permissions and limitations under the License.

Sponsor this project

  •  
  •  

Packages

No packages published

Languages

  • C++48.5%
  • PHP35.1%
  • C10.9%
  • Gherkin3.3%
  • CMake1.3%
  • Shell0.6%
  • Other0.3%

[8]ページ先頭

©2009-2025 Movatter.jp