Skip to content

adds region tags to flex memcache #291

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 5, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions appengine/flexible/memcache/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,25 +27,30 @@
$app['twig.path'] = [ __DIR__ ];
$app['memcached'] = function () {
if (getenv('USE_GAE_MEMCACHE')) {
$addr = getenv('GAE_MEMCACHE_HOST') ?: 'localhost';
$host = getenv('GAE_MEMCACHE_HOST') ?: 'localhost';
$port = getenv('GAE_MEMCACHE_PORT') ?: '11211';
} else {
$server = getenv('MEMCACHE_SERVER') ?: 'localhost:11211';
list($addr, $port) = explode(':', $server);
list($host, $port) = explode(':', $server);
}
$username = getenv('MEMCACHE_USERNAME');
$password = getenv('MEMCACHE_PASSWORD');
# [START memcached]
// $host = 'YOUR_MEMCACHE_HOST';
// $port = 'YOUR_MEMCACHE_PORT';
// $username = 'OPTIONAL_MEMCACHE_USERNAME';
// $password = 'OPTIONAL_MEMCACHE_PASSWORD';
$memcached = new Memcached;
if ($username && $password) {
$memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it(binary protocol) really needed? I'm skeptical because the memcached extension is compiled without binary protocol support.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's optional, but I think it's good to show how to use it, since we should encourage it.

Are you sure about it not being supported? In this sample, when I include the php.ini param, the SASL auth works as expected.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah look at the phpinfo or similar, you'll see it's disabled

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then why does it work...?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memcached::setOption just returns false on failure. I suspect it just returns false.

Also iirc, I successfully communicate via sasl auth with redislab, without setting the OPT_BINARY_PROTOCOL option.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was throwing an error w/o being set. I'll look into it though and see if I missed something.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tmatsuo I'm not sure where the confusion is, but if I comment out the line above, the calls to Memcache fail. I have looked at the php.ini configuration, and do not see anything that implies binary protocol is missing.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I was wrong. The memcached module doesn't have igbinary option enalbed, which is different from the binary protocol. I confused those two.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you Takashi!

$memcached->setSaslAuthData($username, $password);
}
if (!$memcached->addServer($addr, $port)) {
throw new Exception("Failed to add server $addr:$port");
if (!$memcached->addServer($host, $port)) {
throw new Exception("Failed to add server $host:$port");
}
# [END memcached]
return $memcached;
};
# [END memcached]

$app->get('/vars', function () {
$vars = array('MEMCACHE_PORT_11211_TCP_ADDR',
Expand Down Expand Up @@ -106,7 +111,6 @@
]);
});

# [START memcached]
$app->get('/memcached/{key}', function (Application $app, $key) {
/** @var Memcached $memcached */
$memcached = $app['memcached'];
Expand All @@ -119,6 +123,5 @@
$value = $request->getContent();
return $memcached->set($key, $value, time() + 600); // 10 minutes expiration
});
# [END memcached]

return $app;