Как подключить memcache/memcached

Автор Nanotraktor, 15 июня 2014, 19:48:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Nanotraktor

Здравствуйте, друзья.
Помогите решить проблему подключения memcached.
Форум пишет "SMF has detected that your server has Memcached installed."
В рамках хостинга даются вот такие данные для подключения:
ЦитироватьСокет memcache:    unix:///home/username/.system/memcache/socket
(скрин 1.png)
На расположенном рядом сайте (wordpress, плагин W3 Total Cache) работает вот такая строка (кешируемые успешно пишутся в память):
unix:///home/username/.system/memcache/socket

Но при указании её в "Server Settings"--"Caching" (уровень кеширования - 1) в логах сайта появляется ошибка:
Цитировать2: memcache_connect() expects parameter 2 to be long, string given

В связи с чем вопрос - как подружить мемкеш и СМФ используя данные для подключения в виде юникс-сокета?


Nanotraktor

Цитата: digger® от 16 июня 2014, 02:25:06
Попробуйте указать так
/home/username/.system/memcache/socket:0
Спасибо за ответ.
К сожалению, тоже не помогло.
В этом случае ошибка ещё печальнее:
Цитировать2: memcache_connect() [<a href='function.memcache-connect'>function.memcache-connect</a>]: Can't connect to /home/remn/.system/memcache/socket:11211, php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
File: /home/remn/test.com/www/Sources/Load.php
Line: 2742
Если не указывать порт, то отдаётся в точности та же самая ошибка видимо, скрипт по какой-то причине пытается подставить вместо нуля - порт по-умолчанию (11211).

digger®

Я посмотрел, через админку форума memcached на сокете не прописать.
Если есть желание, можете попробовать вручную, правкой кода.

В /Sources/Load.php

найти
$memcached = memcache_connect($server[0], empty($server[1]) ? 11211 : $server[1]);
заменить на
$memcached = memcache_connect('unix:///home/username/.system/memcache/socket', 0);

найти
$memcached = memcache_pconnect($server[0], empty($server[1]) ? 11211 : $server[1]);
заменить на
$memcached = memcache_pconnect('unix:///home/username/.system/memcache/socket', 0);

Nanotraktor

Цитата: digger® от 16 июня 2014, 16:29:12
Я посмотрел, через админку форума memcached на сокете не прописать.
Если есть желание, можете попробовать вручную, правкой кода.

В /Sources/Load.php

найти
$memcached = memcache_connect($server[0], empty($server[1]) ? 11211 : $server[1]);
заменить на
$memcached = memcache_connect('unix:///home/username/.system/memcache/socket', 0);

найти
$memcached = memcache_pconnect($server[0], empty($server[1]) ? 11211 : $server[1]);
заменить на
$memcached = memcache_pconnect('unix:///home/username/.system/memcache/socket', 0);

Огромное спасибо, это то что нужно - заработало как часики!

Ulibka

SMF 2.017 
поставил на хостинг Beget
на хостинге есть услуга memcahed.

Настройка на удивление проста: localhost

Но почему то возникла непонятная проблема.
SMF по идее должен сразу найти работающий memcahed и написать зелеными буквами:

"На сервере установлен Memcached"

В моем случае этого не происходит (php 7.3)

Но если понизить версию PHP до 5.6. то желанная надпись становится видна и горит зеленым.
Если в настройках записать localhost при php7.3. то в memcahed ничего не пишется.

Beget рекомендовал установить php5.6 - но мне такая идея категорически не нравится.

Может быть можно сделать модификации аналогичные вышепривtденным?

Ulibka

Вот тут:
https://www.php.net/manual/ru/book.memcache.php
пишут
Note that the Memcache 3.0.8 module DOES NOT WORK WITH PHP 7 (or higher)

Наверное есть фикс для php 7.3 ?

Yarik

Цитата: Ulibka от 12 июня 2020, 09:23:00Note that the Memcache 3.0.8 module DOES NOT WORK WITH PHP 7 (or higher)
РНР 7.4.6
Memcached замечательно крутится и работает.
Тут как бы Beget надо дать поджопник чтобы они установили и настроили Memcached. Ибо это уже исключительно их нежелание.

Ulibka

Цитата: S.T.A.L.K.E.R. от 12 июня 2020, 14:38:12РНР 7.4.6
Memcached замечательно крутится и работает.
Тут как бы Beget надо дать поджопник чтобы они установили и настроили Memcached. Ибо это уже исключительно их нежелание.

Докладываю что на Beget теперь memcached работает в штатном режиме с php7.3

P.S. Про PHP 7.4 разработчики писали что не рекомендуют

Yarik

Цитата: Ulibka от 16 июня 2020, 11:47:10P.S. Про PHP 7.4 разработчики писали что не рекомендуют
Ну разработчикам видней.
А этого не знал,по этому у меня видать и работает.  :)

Ulibka

Перешел на VPS : Ubuntu 18 + LEMP (php 7.2)

Поставил memcached так:
apt-get install php-memcached
apt-get install memcached

Запускаю тест:

$memcached = new Memcached();
$memcached->addServer('localhost', 11211);

$memcached->set('key645868', 'value записал Я');

echo $memcached->get('key645868'); // Если всё ок, то выведет value



Тест отработал штатно.

SMF почему то красным пишет что memcashed не найдет .

Подскажите пожалуйста - в чем может быть проблема ?

Ulibka

Обнаружил что в PHP (той которая установлена) нет функции memcache_connect('localhost', 11211);

При этом есть набор объектов

$memcached = new Memcached();
$memcached->addServer('localhost', 11211);

С одной стороны можно конечно самому написать функции , опираясь на класс

Но может быть можно поставить какой то пакет ?




Ulibka

Огромное спасибо!!!

Завелся!.