Как подружить php7.0-memcached с phpBBex?

Список разделов phpBBex 2.x Мастерская 2.x

Описание: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 2.x и phpBB 3.1.x.
Модератор: Поддержка

Сообщение #1 Sferg » 19.11.2016, 17:43

Здравствуйте. Имеется связка Nginx + PHP 7 + MariaDB 10. Подскажите, пожалуйста, как подружить php7.0-memcached с phpBBex?
Ранее, на PHP 5, использовалось memcached + php5-memcache и всё работало. В PHP 7 есть только php7.0-memcached.

Последовательность действий:
1. aptitude install memcached php7.0-memcached
2. В файл config.php прописываю:

Код: Выделить всё
$acm_type = 'memcache';
@define('PHPBB_ACM_MEMCACHE_HOST', 'localhost');
@define('PHPBB_ACM_MEMCACHE_PORT', 11211);
@define('PHPBB_ACM_MEMCACHE_COMPRESS', false);

3. Открываю страницу форума и получаю ошибку:
Изображение

P.S. Вывод netstat -tulpan | grep ":11211"
Код: Выделить всё
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      9589/memcached
udp        0      0 127.0.0.1:11211         0.0.0.0:*                           9589/memcached

Умеет ли вообще phpBBex работать с memcached? Или только с memcache?
Debian 8.10 "Jessie", kernel 3.16.51-2 x86_64
Intel Atom N2800, 6Gb DDR3-1333, GMA3650, 120Gb SSD + 640Gb HDD + 500 Gb HDD (USB)
Sferg
Автор темы, Бывалый
Репутация: 12
С нами: 9 лет 1 месяц

Сообщение #2 Sumanai » 19.11.2016, 17:47

Нет, не умеет. Можно попытаться самому сделать драйвер, по пути \phpbb\cache\driver\memcache.php скопировать в memcached.php и внести несколько правок.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 9 лет 6 месяцев

Сообщение #3 Sferg » 19.11.2016, 18:06

Sumanai:и внести несколько правок.
Каких, если не секрет? Самое примитивное, что я сделал - это во всём коде заменил memcache\MEMCACHE на memcached\MEMCACHED. Но это ничего не дало (что, полагаю, и логично).

Есть ли вообще смысл заморачиваться с мемкэшем? Или эффективнее будет перемонтировать ../forum/cache в tmpfs?
Debian 8.10 "Jessie", kernel 3.16.51-2 x86_64
Intel Atom N2800, 6Gb DDR3-1333, GMA3650, 120Gb SSD + 640Gb HDD + 500 Gb HDD (USB)
Sferg
Автор темы, Бывалый
Репутация: 12
С нами: 9 лет 1 месяц

Сообщение #4 Sumanai » 19.11.2016, 18:10

Что-то похожее сделал, правда не уверен, что оно правильно работает.
Файл во вложении, вместо
Код: Выделить всё
$acm_type = 'memcache';
Нужно использовать
Код: Выделить всё
$acm_type = 'phpbb\\cache\\driver\\memcached';
Sferg:Есть ли вообще смысл заморачиваться с мемкэшем?
Нужно тестировать, на разных конфигурациях эффект может быть разным.

Добавлено спустя 3 минуты 20 секунд:
И не забудьте почистить кеш, на всякий случай напоминаю.
Вложения
memcached.zip
(1.04 КБ) Скачиваний: 251
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 9 лет 6 месяцев

Сообщение #5 Sferg » 19.11.2016, 20:16

Sumanai, положил файл memcached.php в ../forum/phpbb/cache/driver/. Заменил в ../forum/config.php строчку:

Код: Выделить всё
$acm_type = 'phpbb\\cache\\driver\\memcached';

И очистил кэш. Страница форума открывается без ошибок. Но смущает то, что в ../forum/cache появилось всего лишь 2 файла.

Вывод команды ls -A1:
Код: Выделить всё
autoload_0374ec857381230fa83049643ce3cdee.php
container_0374ec857381230fa83049643ce3cdee.php

Если не ошибаюсь, в ../forum/cache должны, после первого же обновления страницы форума, появляться файлы data_*.php и tpl_*.php. Но появилось всего 2 вышеуказанных файла.

P.S. Есть ли способ проконтролировать правильность работы драйвера?
P.P.S. Указание без полного пути в $acm_type = 'memcached'; тоже без ошибки обрабатывается.
Debian 8.10 "Jessie", kernel 3.16.51-2 x86_64
Intel Atom N2800, 6Gb DDR3-1333, GMA3650, 120Gb SSD + 640Gb HDD + 500 Gb HDD (USB)
Sferg
Автор темы, Бывалый
Репутация: 12
С нами: 9 лет 1 месяц

Сообщение #6 Sumanai » 19.11.2016, 20:56

Sferg:Но смущает то, что в ../forum/cache появилось всего лишь 2 файла
Это нормально.
Sferg:появляться файлы data_*.php
Они в мемкеше.
Sferg:tpl_*.php.
Шаблоны обрабатываются твигом, и находятся в подкаталоге twig.
Sferg:P.S. Есть ли способ проконтролировать правильность работы драйвера?
Установить какой-нибудь менеджер мемкеша и посмотреть, что там лежит.
Sferg:P.P.S. Указание без полного пути в $acm_type = 'memcached'; тоже без ошибки обрабатывается.
Это устаревшая запись, может перестать работать в новых версиях.

И как по скорости? Есть ли смысл включать этот драйвер в дистрибутив, после доработки?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 9 лет 6 месяцев

Сообщение #7 Sferg » 19.11.2016, 21:23

Sumanai:Установить какой-нибудь менеджер мемкеша и посмотреть, что там лежит.

Ну да, там что-то появляется. Вывод команды nc 127.0.0.1 11211, затем stats items:

Код: Выделить всё
STAT items:1:number 3
STAT items:1:age 93
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 10
STAT items:1:expired_unfetched 4
STAT items:1:evicted_unfetched 0
STAT items:1:crawler_reclaimed 0
STAT items:1:lrutail_reflocked 0
STAT items:2:number 2
STAT items:2:age 93
STAT items:2:evicted 0
STAT items:2:evicted_nonzero 0
STAT items:2:evicted_time 0
STAT items:2:outofmemory 0
STAT items:2:tailrepairs 0
STAT items:2:reclaimed 5
STAT items:2:expired_unfetched 2
STAT items:2:evicted_unfetched 0
STAT items:2:crawler_reclaimed 0
STAT items:2:lrutail_reflocked 0
STAT items:3:number 5
STAT items:3:age 93
STAT items:3:evicted 0
STAT items:3:evicted_nonzero 0
STAT items:3:evicted_time 0
STAT items:3:outofmemory 0
STAT items:3:tailrepairs 0
STAT items:3:reclaimed 20
STAT items:3:expired_unfetched 20
STAT items:3:evicted_unfetched 0
STAT items:3:crawler_reclaimed 0
STAT items:3:lrutail_reflocked 0
STAT items:4:number 1
STAT items:4:age 93
STAT items:4:evicted 0
STAT items:4:evicted_nonzero 0
STAT items:4:evicted_time 0
STAT items:4:outofmemory 0
STAT items:4:tailrepairs 0
STAT items:4:reclaimed 0
STAT items:4:expired_unfetched 0
STAT items:4:evicted_unfetched 0
STAT items:4:crawler_reclaimed 0
STAT items:4:lrutail_reflocked 0
STAT items:6:number 2
STAT items:6:age 93
STAT items:6:evicted 0
STAT items:6:evicted_nonzero 0
STAT items:6:evicted_time 0
STAT items:6:outofmemory 0
STAT items:6:tailrepairs 0
STAT items:6:reclaimed 5
STAT items:6:expired_unfetched 2
STAT items:6:evicted_unfetched 0
STAT items:6:crawler_reclaimed 0
STAT items:6:lrutail_reflocked 0
STAT items:7:number 1
STAT items:7:age 93
STAT items:7:evicted 0
STAT items:7:evicted_nonzero 0
STAT items:7:evicted_time 0
STAT items:7:outofmemory 0
STAT items:7:tailrepairs 0
STAT items:7:reclaimed 0
STAT items:7:expired_unfetched 0
STAT items:7:evicted_unfetched 0
STAT items:7:crawler_reclaimed 0
STAT items:7:lrutail_reflocked 0
STAT items:16:number 1
STAT items:16:age 93
STAT items:16:evicted 0
STAT items:16:evicted_nonzero 0
STAT items:16:evicted_time 0
STAT items:16:outofmemory 0
STAT items:16:tailrepairs 0
STAT items:16:reclaimed 0
STAT items:16:expired_unfetched 0
STAT items:16:evicted_unfetched 0
STAT items:16:crawler_reclaimed 0
STAT items:16:lrutail_reflocked 0
STAT items:21:number 1
STAT items:21:age 93
STAT items:21:evicted 0
STAT items:21:evicted_nonzero 0
STAT items:21:evicted_time 0
STAT items:21:outofmemory 0
STAT items:21:tailrepairs 0
STAT items:21:reclaimed 0
STAT items:21:expired_unfetched 0
STAT items:21:evicted_unfetched 0
STAT items:21:crawler_reclaimed 0
STAT items:21:lrutail_reflocked 0
END

Sumanai:Это устаревшая запись, может перестать работать в новых версиях.
Почему же устаревшая? На мой взгляд проще указывать название драйвера, чем полный путь к нему.

Sumanai:И как по скорости? Есть ли смысл включать этот драйвер в дистрибутив, после доработки?
Ну, наверняка кому-то из энтузиастов данный драйвер может пригодиться. Что же касается скорости, то:

Минимальное время генерации главной страницы при $acm_type = 'memcached':
Time: 0.033s | Queries: 12 | Peak Memory Usage: 1.81 МБ

Минимальное время генерации главной страницы при $acm_type = 'file':
Time: 0.029s | Queries: 12 | Peak Memory Usage: 1.81 МБ

Таким образом, разницы в скорости практически нет.
Debian 8.10 "Jessie", kernel 3.16.51-2 x86_64
Intel Atom N2800, 6Gb DDR3-1333, GMA3650, 120Gb SSD + 640Gb HDD + 500 Gb HDD (USB)
Sferg
Автор темы, Бывалый
Репутация: 12
С нами: 9 лет 1 месяц

Сообщение #8 Sumanai » 19.11.2016, 21:28

Sferg:Почему же устаревшая?
Спроси разрабов phpBB.
Sferg:Таким образом, разницы в скорости практически нет.
Я вижу замедление. Это под нагрузкой?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 9 лет 6 месяцев

Сообщение #9 Sferg » 19.11.2016, 21:31

Sumanai:Я вижу замедление. Это под нагрузкой?
Нет, без нагрузки. На тестовом форуме я один.

P.S. Если ../forum/cache перемонтировать в tmpfs, то разницы в скорости по сравнению с ext4 не наблюдается.
Debian 8.10 "Jessie", kernel 3.16.51-2 x86_64
Intel Atom N2800, 6Gb DDR3-1333, GMA3650, 120Gb SSD + 640Gb HDD + 500 Gb HDD (USB)
Sferg
Автор темы, Бывалый
Репутация: 12
С нами: 9 лет 1 месяц

Сообщение #10 Sumanai » 19.11.2016, 22:22

На тестовом не релевантно. Интересно как под загрузкой. Разницы нет потому что всё закешировалось в ОП, но при недостатке ОП ситуация может быть иной.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 9 лет 6 месяцев


Вернуться в Мастерская 2.x



cron