예제 #1
0
<?php

$server = new MemcachedServer();
$server->on(Memcached::ON_CONNECT, function ($remote_ip, $remote_port) {
    echo "Incoming connection from {$remote_ip}:{$remote_port}" . PHP_EOL;
    return Memcached::RESPONSE_SUCCESS;
});
$server->on(Memcached::ON_ADD, function ($client_id, $key, $value, $flags, $expiration, &$cas) {
    echo "client_id=[{$client_id}]: Add key=[{$key}], value=[{$value}], flags=[{$flags}], expiration=[{$expiration}]" . PHP_EOL;
    $cas = 15;
    return Memcached::RESPONSE_SUCCESS;
});
$server->on(Memcached::ON_APPEND, function ($client_id, $key, $value, $cas, &$result_cas) {
    echo "client_id=[{$client_id}]: Append key=[{$key}], value=[{$value}], cas=[{$cas}]" . PHP_EOL;
    return Memcached::RESPONSE_SUCCESS;
});
$server->on(Memcached::ON_PREPEND, function ($client_id, $key, $value, $cas, &$result_cas) {
    echo "client_id=[{$client_id}]: Prepend key=[{$key}], value=[{$value}], cas=[{$cas}]" . PHP_EOL;
    return Memcached::RESPONSE_SUCCESS;
});
$server->on(Memcached::ON_INCREMENT, function ($client_id, $key, $delta, $initial, $expiration, &$result, &$result_cas) {
    echo "client_id=[{$client_id}]: Incrementing key=[{$key}], delta=[{$delta}], initial=[{$initial}], expiration=[{$expiration}]" . PHP_EOL;
    return Memcached::RESPONSE_SUCCESS;
});
$server->on(Memcached::ON_DECREMENT, function ($client_id, $key, $delta, $initial, $expiration, &$result, &$result_cas) {
    echo "client_id=[{$client_id}]: Decrementing key=[{$key}], delta=[{$delta}], initial=[{$initial}], expiration=[{$expiration}]" . PHP_EOL;
    return Memcached::RESPONSE_SUCCESS;
});
$server->on(Memcached::ON_DELETE, function ($client_id, $key, $cas) {
    echo "client_id=[{$client_id}]: Delete key=[{$key}], cas=[{$cas}]" . PHP_EOL;
    return Memcached::RESPONSE_SUCCESS;
예제 #2
0
    public function set($key, $value, $expiration)
    {
        $this->values[$key] = array('value' => $value, 'expires' => time() + $expiration);
    }
    public function get($key)
    {
        if (isset($this->values[$key])) {
            if ($this->values[$key]['expires'] < time()) {
                unset($this->values[$key]);
                return null;
            }
            return $this->values[$key]['value'];
        } else {
            return null;
        }
    }
}
$storage = new Storage();
$server->on(Memcached::ON_GET, function ($client_id, $key, &$value, &$flags, &$cas) use($storage) {
    echo "Getting key=[{$key}]" . PHP_EOL;
    if (($value = $storage->get($key)) != null) {
        return Memcached::RESPONSE_SUCCESS;
    }
    return Memcached::RESPONSE_KEY_ENOENT;
});
$server->on(Memcached::ON_SET, function ($client_id, $key, $value, $flags, $expiration, $cas, &$result_cas) use($storage) {
    echo "Setting key=[{$key}] value=[{$value}]" . PHP_EOL;
    $storage->set($key, $value, $expiration);
    return Memcached::RESPONSE_SUCCESS;
});
$server->run("127.0.0.1:3434");