Plugin Support
qtwrk
(@qtwrk)
Hi,
are you using memcached unix socket ?
make sure your PHP user has permission to read/write to that socket file
Best regards,
Hi @xorred ,
May I know if this is a cloud image launched from marketplace?
If so, the default object cache has set to use unix socket, so check the port command may not help. Please consider to Method Redis, Host set to /var/run/redis/redis-server.sock and Port set to 0.
Best,
Eric
Thread Starter
Atlant
(@xorred)
@qtwrk – can you please clarify how I could make sure of that besides the ls -lah, showing the right permissions, same as the webserver and Memcached ‘-u’ user switch? Is there a test I could run?
@eric780217 thanks, Redis works, but I would really like to use Memcached.
Plugin Support
qtwrk
(@qtwrk)
Hi,
please create a php file with code
<?php
$mem = new Memcached();
#$mem->addServer("127.0.0.1", 11211);
$mem->addServer('/var/www/memcached.sock',0);
//$mem->connect("127.0.0.1", 11211);
$mem->set('key1', 'This is first value', 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
$mem->replace('key1', 'This is replace value', 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
$mem->close();
replace /var/www/memcached.sock to your actual path if it’s different , then access this file via browser, and post what it outputs.
Best regards,
Thread Starter
Atlant
(@xorred)
Get key1 value:
Get key1 value:
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value:
This is the file’s output.
Plugin Support
qtwrk
(@qtwrk)
Hi,
it should output like this
Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value:
what’s permission on that memcached.sock file ? and PHP user ?
Best regards,
Thread Starter
Atlant
(@xorred)
php user is www-data
permissions on the sock file:
srwxrwx— 1 www-data www-data 0 Aug 18 16:27 memcached.sock
Thread Starter
Atlant
(@xorred)
Thought to share the memcached conf here: (ps. I *JUST* changed the port to 0, figured out 11211 was wrong. Output of the test file is still the same…
# memcached default config file
# 2003 - Jay Bonci <[email protected]>
# This configuration file is read by the start-memcached script provided as
# part of the Debian GNU/Linux distribution.
# Run memcached as a daemon. This command is implied, and is not needed for the
# daemon to run. See the README.Debian that comes with this package for more
# information.
-d
# Log memcached's output to /var/log/memcached
logfile /var/log/memcached.log
# Be verbose
-v
# Be even more verbose (print client commands as well)
# -vv
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 128
# Default connection port is 11211
-p 0
# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u www-data
# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
-l 127.0.0.1
# Limit the number of simultaneous incoming connections. The daemon default is 1024
# -c 1024
# Lock down all paged memory. Consult with the README and homepage before you do this
# -k
# Return error when memory is exhausted (rather than removing items)
# -M
# Maximize core file limit
# -r
# Use a pidfile
-P /var/run/memcached/memcached.pid
-s /var/www/memcached.sock
-a 0766
-p /tmp/memcached.pid
Thread Starter
Atlant
(@xorred)
Also, changed your code to reflect a socket connection and now it works (seems to)
$mem = new Memcached();
#$mem->addServer("127.0.0.1", 0);
$mem->addServer('/var/www/memcached.sock',0);
//$mem->connect("/var/www/memcached.sock", 0);
$mem->set('key1', 'This is first value', 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
$mem->replace('key1', 'This is replace value', 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
Plugin Support
qtwrk
(@qtwrk)
So you got the test script working with memcached socket now ?
Thread Starter
Atlant
(@xorred)
yep. Overall I think this thread can be closed. Thanks a LOT for your help so far!