예제 #1
0
 public function test_serialized_col_name_validators()
 {
     $cf = new ColumnFamily($this->client, 'CompositeNames');
     $columns = array(serialize(array(0, 'meta')) => 'foo', serialize(array(1, 'blah')) => 10);
     $cf->insert('key', $columns);
     $this->assertEquals($columns, $cf->get('key'));
 }
 /**
  * Retrieve an item from the cache by key.
  *
  * @param  string  $key
  * @return mixed
  */
 public function get($key)
 {
     $prefixed = $this->prefix . $key;
     $cache = $this->columnFamily->get($key);
     // If we have a cache record we will check the expiration time against current
     // time on the system and see if the record has expired. If it has, we will
     // remove the records from the database table so it isn't returned again.
     if (!is_null($cache)) {
         if (is_array($cache)) {
             $cache = (object) $cache;
         }
         if (time() >= $cache->expiration) {
             $this->forget($key);
             return null;
         }
         return $this->encrypter->decrypt($cache->value);
     }
 }
예제 #3
0
 protected function getValue($key)
 {
     if (isset($this->cache[$key])) {
         return $this->cache[$key];
     }
     $cf = new ColumnFamily($this->cassandra, $this->config['column_family']);
     try {
         $value = array_shift($cf->get($key, new ColumnSlice("", "")));
     } catch (\cassandra\NotFoundException $e) {
         return false;
     }
     return json_decode($value, true);
 }
예제 #4
0
$pool = new ConnectionPool('Keyspace1', array('127.0.0.1'));
$letters = new ColumnFamily($pool, 'Letters');
// Insert a few records
$columns = array(1 => "a", 2 => "b", 3 => "c", 4 => "d", 5 => "e");
$letters->insert('key', $columns);
function print_slice($columns)
{
    echo "(";
    foreach ($columns as $number => $letter) {
        echo "{$number} => {$letter}, ";
    }
    echo ")\n";
}
// Fetch everything >= 2
$slice = new ColumnSlice(2);
print_slice($letters->get('key', $slice));
// Fetch everything between 2 and 4, inclusive
$slice = new ColumnSlice(2, 4);
print_slice($letters->get('key', $slice));
// Fetch the first three columns in the row
$slice = new ColumnSlice('', '', $count = 3);
print_slice($letters->get('key', $slice));
// Fetch the last three columns in the row
$slice = new ColumnSlice('', '', $count = 3, $reversed = true);
print_slice($letters->get('key', $slice));
// Fetch two columns before 4
$slice = new ColumnSlice(4, '', $count = 2, $reversed = true);
print_slice($letters->get('key', $slice));
// Destroy our schema
$sys->drop_keyspace("Keyspace1");
// Close our connections
예제 #5
0
// Use composites for column names and row keys
$sys->create_column_family('Keyspace1', 'Composites', array("comparator_type" => "CompositeType(LongType, AsciiType)", "key_validation_class" => "CompositeType(AsciiType, LongType)"));
// Start a connection pool, create our ColumnFamily instance
$pool = new ConnectionPool('Keyspace1', array('127.0.0.1'));
$cf = new ColumnFamily($pool, 'Composites');
// Make it easier to work with non-scalar types
$cf->insert_format = ColumnFamily::ARRAY_FORMAT;
$cf->return_format = ColumnFamily::ARRAY_FORMAT;
// Insert a few records
$key1 = array("key", 1);
$key2 = array("key", 2);
$columns = array(array(array(0, "a"), "val0a"), array(array(1, "a"), "val1a"), array(array(1, "b"), "val1b"), array(array(1, "c"), "val1c"), array(array(2, "a"), "val2a"), array(array(3, "a"), "val3a"));
$cf->insert($key1, $columns);
$cf->insert($key2, $columns);
// Fetch a user record
$row = $cf->get($key1);
$col1 = $row[0];
list($name, $value) = $col1;
echo "Column name: ";
print_r($name);
echo "Column value: ";
print_r($value);
echo "\n\n";
// Fetch columns with a first component of 1
$slice = new ColumnSlice(array(1), array(1));
$columns = $cf->get($key1, $slice);
foreach ($columns as $column) {
    list($name, $value) = $column;
    echo "{$value}, ";
}
echo "\n\n";
예제 #6
0
use phpcassa\Connection\ConnectionPool;
use phpcassa\ColumnFamily;
use phpcassa\SystemManager;
use phpcassa\Schema\StrategyClass;
// Create a new keyspace and column family
$sys = new SystemManager('127.0.0.1');
$sys->create_keyspace('Keyspace1', array("strategy_class" => StrategyClass::SIMPLE_STRATEGY, "strategy_options" => array('replication_factor' => '1')));
$sys->create_column_family('Keyspace1', 'Users');
// Start a connection pool, create our ColumnFamily instance
$pool = new ConnectionPool('Keyspace1', array('127.0.0.1'));
$users = new ColumnFamily($pool, 'Users');
// Insert a few records
$users->insert('user0', array("name" => "joe", "state" => "TX"));
$users->insert('user1', array("name" => "bob", "state" => "CA"));
// Fetch a user record
$user = $users->get('user0');
$name = $user["name"];
echo "Fetched user {$name}\n";
// Fetch both at once
$both = $users->multiget(array('user0', 'user1'));
foreach ($both as $user_id => $columns) {
    echo "{$user_id} state: " . $columns["state"] . "\n";
}
// Only fetch the name of user1
$columns = $users->get('user1', $column_slice = null, $column_names = array("name"));
echo "Name is " . $columns["name"] . "\n";
// Insert two more records at once
$users->batch_insert(array("user3" => array("name" => "kat"), "user4" => array("name" => "tom")));
// Remove the last row
$users->remove("user4");
// Clear out the column family
예제 #7
0
 */
require_once __DIR__ . '/../lib/autoload.php';
use phpcassa\Connection\ConnectionPool;
use phpcassa\ColumnFamily;
use phpcassa\SystemManager;
use phpcassa\Schema\StrategyClass;
// Create a new keyspace and column family
$sys = new SystemManager('127.0.0.1');
$sys->create_keyspace('Keyspace1', array("strategy_class" => StrategyClass::SIMPLE_STRATEGY, "strategy_options" => array('replication_factor' => '1')));
$sys->create_column_family('Keyspace1', 'Counts', array("default_validation_class" => 'CounterColumnType'));
// Start a connection pool, create our ColumnFamily instance
$pool = new ConnectionPool('Keyspace1', array('127.0.0.1'));
$count_cf = new ColumnFamily($pool, 'Counts');
// ColumnFamily::add() is the easiest way to increment a counter
$count_cf->add("key1", "col1");
$results = $count_cf->get("key1");
$current_count = $results["col1"];
echo "After one add(): {$current_count}\n";
// You can specify a value other than 1 to adjust the counter by
$count_cf->add("key1", "col1", 10);
$results = $count_cf->get("key1");
$current_count = $results["col1"];
echo "After add(10): {$current_count}\n";
// ColumnFamily::insert() will also increment values, but you can
// adjust multiple columns at the same time
$count_cf->insert("key1", array("col1" => 3, "col2" => -1));
$results = $count_cf->get("key1");
$current_count = $results["col1"];
echo "After insert(3): {$current_count}\n\n";
// And ColumnFamily::batch_insert() lets you increment counters
// in multiple rows at the same time
        $columnfamily_name = $_POST['columnfamily_name'];
    }
    try {
        $pool = new ConnectionPool($keyspace_name, $cluster_helper->getArrayOfNodesForCurrentCluster(), null, 5, 5000, 5000, 10000, $cluster_helper->getCredentialsForCurrentCluster());
        $cf_def = ColumnFamilyHelper::getCFInKeyspace($keyspace_name, $columnfamily_name);
        $is_super_cf = $cf_def->column_type == 'Super';
        if ($is_super_cf) {
            $column_family = new SuperColumnFamily($pool, $columnfamily_name);
        } else {
            $column_family = new ColumnFamily($pool, $columnfamily_name);
        }
        if ($action == 'dec') {
            $value *= -1;
        }
        $column_family->add($key, $super_column, $column, $value);
        $new_value = $column_family->get($key);
        if ($column_family->cfdef->column_type == 'Super') {
            $new_value = $new_value[$super_column][$column];
        } else {
            $new_value = $new_value[$column];
        }
        redirect('counters.php?keyspace_name=' . $keyspace_name . '&columnfamily_name=' . $columnfamily_name . '&new_value=' . $new_value);
    } catch (Exception $e) {
        $_SESSION['message'] = $e->getMessage();
        redirect('counters.php?keyspace_name=' . $keyspace_name . '&columnfamily_name=' . $columnfamily_name . '&error=1');
    }
}
if (!$included_header) {
    echo getHTML('header.php');
    if (!$is_valid_action) {
        // No action specified
예제 #9
0
// Make a couple of user IDs with non-Time UUIDs
$user1_id = UUID::uuid4();
$user2_id = UUID::uuid4();
// Insert some log messages
$user1_logs = array();
$user2_logs = array();
for ($i = 0; $i < 5; $i++) {
    $user1_logs[] = array(UUID::uuid1(), "message{$i}");
    $user2_logs[] = array(UUID::uuid1(), "message{$i}");
}
$user_logs->batch_insert(array(array($user1_id, $user1_logs), array($user2_id, $user2_logs)));
echo "Using ColumnFamily::ARRAY_FORMAT\n";
echo "================================\n\n";
// Pull the first two logs back out
$slice = new ColumnSlice('', '', $count = 2);
$logs = $user_logs->get($user1_id, $slice);
echo "First two logs for user1: \n";
list($uuid, $message) = $logs[0];
echo "    " . $uuid->time . ", " . $message . "\n";
list($uuid, $message) = $logs[1];
echo "    " . $uuid->time . ", " . $message . "\n\n";
// Fetch the last log for both users at once
$slice = new ColumnSlice('', '', $count = 1, $reversed = true);
$rows = $user_logs->multiget(array($user1_id, $user2_id), $slice);
foreach ($rows as $row) {
    list($user_id, $logs) = $row;
    $log = $logs[0];
    echo "Most recent log for {$user_id}:\n";
    echo "    " . $log[0]->time . ": " . $log[1] . "\n";
}
echo "\n";