Экономия + Кассандра + PHP + Windows?

Подключение к Cassandra с помощью PHP - это действительно боль. Документация в Apache и DataStax написана крайне плохо - для пользователей Windows.

У меня установлен Thrift (я верю!) Через Chocolatey. Но я до сих пор не могу скомпилировать php-код для Cassandra, используя thrift.

Если вы посмотрите на эту ссылку,

  1. Теперь мы можем скомпилировать php-код для Cassandra с помощью команды thrift. Я использовал команду: d:\cassandra\trift\thrift.exe --gen php d:\cassandra\interface\cassandra.thrift

Так что же cassandra.thrift и откуда он взялся?? Что я должен положить в него??

Если я точно следую инструкции, я получаю эту ошибку,

Не удалось открыть входной файл: d:\cassandra\interface\cassandra.thrift

Так, что происходит?

Как мне сделать эту работу?

Я пытался установить DataStax PHP Driver для Apache Cassandra и эту документацию даже хуже.

Почему модули PHP не поставляются с Cassandra, как для MongoDB? Большинство независимых драйверов, которые я нашел, устарели, больше не поддерживаются или заброшены.

РЕДАКТИРОВАТЬ:

От README,

Установите расширение PHP

Установка с помощью pecl

Драйвер PHP не опубликован в официальном репозитории PECL. Вы по-прежнему можете установить его с помощью pecl, указав в качестве аргумента команды pecl install указанный путь к файлу package.xml.

Установите версию 2.0 C/C++ драйвера

not published to the official PECL repository yes - это да или еще?

Получение зависимостей сборки

CMake
Git
ActiveState Perl
Python v2.7.x

Я скачал и установил. Тогда что? В построении драйвера,

Пакетный сценарий был создан для обнаружения установленных версий Visual...

Какие? Откуда вдруг приходит пакетный скрипт??

Затем,

Сначала вам нужно будет открыть "Командную строку" (или командную строку Windows SDK), чтобы выполнить пакетный сценарий.

Использование: VC_BUILD.BAT [ОПЦИЯ...]

--DEBUG                           Enable debug build
--RELEASE                         Enable release build (default)
--DISABLE-CLEAN                   Disable clean build

....

Для чего нужны эти "-"?

Чтобы построить 32-битную разделяемую библиотеку:

VC_BUILD.BAT --X86 Чтобы создать 64-битную разделяемую библиотеку:

VC_BUILD.BAT --X64

Откуда .BAT? Что я должен положить в него? Откуда мне его запустить?

В конце концов, для чего нужны эти зависимости? Как я их использую??

Просто надеюсь, что кто-то может написать правильное руководство, а руководство выше - это страшно! (если вы сравните руководства в MongoDB, это гораздо лучше и профессиональнее)

РЕДАКТИРОВАТЬ 2:

Первая ошибка, когда я запускаю.bat со своего рабочего стола,

Я уже установил git, но у меня все еще есть эта ошибка,

После исправления проблемы git выше, у меня есть новая - она ​​просто зависла там, ничего не происходит,

3 ответа

Решение

Забудьте о Thrift и "бете", я нашел лучшее решение. Это очень просто и чрезвычайно легко!

Примеры кодов,

require_once 'lib/Cassandra/Cassandra.php';

$cassandra = new Cassandra();

$s_server_host     = '127.0.0.1';    // Localhost
$i_server_port     = 9042;
$s_server_username = 'admin';  // We don't use username
$s_server_password = 'password';  // We don't use password
$s_server_keyspace = 'demo';  // We don't have created it yet

$cassandra->connect($s_server_host, $s_server_username, $s_server_password, $s_server_keyspace, $i_server_port);

// Tests if the connection was successful:
if ($cassandra) {

    // Select:
    // Queries a table.
    $cql = "SELECT * FROM users;";

    // Launch the query.
    $results = $cassandra->query($cql);

    // Update:
    // Prepares a statement.
    $stmt = $cassandra->prepare('UPDATE users SET first_name = ?, last_name = ? where id = ?');

    // Executes a prepared statement.
    $values = array('first_name' => 'Fred', 'last_name' => 'Smith', 'id' => '1');
    $result = $cassandra->execute($stmt, $values);

    // Insert:
    // Prepares a statement.
    $stmt = $cassandra->prepare('INSERT INTO users (id, first_name, last_name)
    VALUES (:id, :first_name, :last_name)');

    // Executes a prepared statement.
    $values = array('first_name' => 'John', 'last_name' => 'Robinson', 'id' => '4');
    $result = $cassandra->execute($stmt, $values);

    // Delete:
    // Prepares a statement.
    $stmt = $cassandra->prepare('DELETE FROM users WHERE id = :id');

    // Executes a prepared statement.
    $values = array('id' => '4');
    $result = $cassandra->execute($stmt, $values);

    // Closes the connection.
    $cassandra->close();
}

Файл IDL cassandra.thrift обычно является частью пакета cassandra, но вы можете найти его по ссылке выше. Ссылка указывает на транк, вы можете захотеть другую версию.

После того, как вы загрузили правильную версию этого файла или, что лучше, нашли ее в загруженном пакете Cassandra в interface папку, сгенерируйте код, как указано в имеющейся документации. Остальное должно быть легко.

Почему модули PHP не поставляются с Cassandra, как для MongoDB? Большинство независимых драйверов, которые я нашел, устарели, больше не поддерживаются или заброшены.

Я не совсем уверен в этом, но я предполагаю, что тот факт, что CQL сейчас активно продвигается, вместо использования сырого Thrift API - последний - сложная задача, в то время как CQL проще в использовании - это один из ключевые факторы, почему это так. Это более или менее устраняет необходимость в другой обертке.


PS: Просто чтобы быть уверенным:

thrift.exe --gen php d:\cassandra\interface\cassandra.thrift

could not open input file cassandra.thrift

Конечно, вы указываете на правильные диски, папки и файлы, не так ли?

Обновить:

PHP-драйвер datastax теперь GA, и двоичные файлы доступны для загрузки (не нужно создавать его самостоятельно):

https://github.com/datastax/php-driver

Что касается PHP-драйвера DataStax, инструкции улучшаются по мере того, как вы пишете.

Поскольку этот драйвер находится в бета-версии, у нас еще нет предварительно скомпилированных двоичных файлов, которые вы можете просто загрузить. Они будут доступны после того, как водитель GA. На данный момент вам придется строить их самостоятельно.

Процесс создания двоичных файлов очень прост. 1) Установите зависимости 2) Запустите vc_build.bat.

Вы можете найти vc_build.bat здесь(просто щелкните правой кнопкой мыши, чтобы сохранить как из вашего браузера):

https://raw.githubusercontent.com/datastax/php-driver/master/ext/vc_build.bat

Другие вопросы по тегам