Laravel 8: Memcache and Memcached

C++ JAVA
User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3357
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Laravel 8: Memcache and Memcached

Post by dakata__92 » Wed Nov 25, 2020 1:19 pm

Открих, че имам проблеми с кеширането под драйвър memcached. Изобщо не се запазват нещата и на практика нямам кеширане, но и никаква грешка не ми излиза никъде. Временно смених кеширането да е във файлове и си работи нормално, но се чудех защо нещата под memcached не вървят. Имам инсталирани на сървъра Memcache и Memcached.

config/cache.php

Code: Select all

        'memcached' => [
            'driver' => 'memcached',
            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
            'sasl' => [
                env('MEMCACHED_USERNAME'),
                env('MEMCACHED_PASSWORD'),
            ],
            'options' => [
                // Memcached::OPT_CONNECT_TIMEOUT => 2000,
            ],
            'servers' => [
                [
                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                    'port' => env('MEMCACHED_PORT', 11211),
                    'weight' => 100,
                ],
            ],
        ],
Забелязах, че на сървъра за memcache е настроен default_port - 11211.
Тъй като Laravel използва другата библиотека memcached се чудех дали проблема е в настройките на работната рамка? Можете ли да ми дадете насоки, как да реша проблема?

Memcache:
Image
Memcached:
Image

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3357
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Memcache and Memcached

Post by dakata__92 » Thu Nov 26, 2020 7:56 am

Подадох в env и MEMCACHED_PERSISTENT_ID=test_slug заедно с CACHE_DRIVER=memcached, но отново не сработи този драйвър. За жалост работя с по-бавният вариант под файлове, но това ме дразни и не мога да разбера защо не работи.

Ако тествам кода по този начин в някой модел, то няма проблем и сработва, а през ларавел не желае....

Code: Select all

        $m = new Memcached();
        $m->addServer('127.0.0.1', 11211);
        if ($m->get('key') != 'test') {
            $m->set('key', 'test');
        }
        dd($m->get('key'));
Ползвам cache()->remember();

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3357
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Memcache and Memcached

Post by dakata__92 » Thu Nov 26, 2020 11:42 am

Никой ли няма идея защо memcached не работи?

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3357
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Memcache and Memcached

Post by dakata__92 » Sat Nov 28, 2020 10:15 am

Продължавам да имам проблем с мемкеша.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 921
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 65

Re: Laravel 8: Memcache and Memcached

Post by Revelation » Mon Nov 30, 2020 8:56 am

Дебъгера какво казва?

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3357
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Memcache and Memcached

Post by dakata__92 » Mon Nov 30, 2020 9:01 am

Revelation wrote:
Mon Nov 30, 2020 8:56 am
Дебъгера какво казва?
Нямам никакви грешки. Просто ми е адски странно защо не сработват нещата.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 921
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 65

Re: Laravel 8: Memcache and Memcached

Post by Revelation » Mon Nov 30, 2020 9:49 am

Не за грешки. Проследи ли с дебъгера какво се случва. Също пробва ли с фасадата

Code: Select all

Cache::remember()
вместо с хелпъра.

Други cache драйвъри имаш ли в config-а.
Пробвай да зададеш конкретен store

Code: Select all

Cache::store('memcached')->remember()
Най-лесно е да тръгнеш стъпка по стъпка с дебъгера и да видиш дали имаш правилните стойности до извикването на Memcached.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3357
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Memcache and Memcached

Post by dakata__92 » Mon Nov 30, 2020 11:10 am

Revelation wrote:
Mon Nov 30, 2020 9:49 am
Не за грешки. Проследи ли с дебъгера какво се случва. Също пробва ли с фасадата

Code: Select all

Cache::remember()
вместо с хелпъра.

Други cache драйвъри имаш ли в config-а.
Пробвай да зададеш конкретен store

Code: Select all

Cache::store('memcached')->remember()
Най-лесно е да тръгнеш стъпка по стъпка с дебъгера и да видиш дали имаш правилните стойности до извикването на Memcached.
Не съм пробвал с фасадата, но ще тествам днес. Ще подам и store освен от конфигурацията, но не мисля, че това ще реши казуса. Конфигурацията е наред и нямам нищо друго в нея.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 921
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 65

Re: Laravel 8: Memcache and Memcached

Post by Revelation » Mon Nov 30, 2020 1:04 pm

Явно не си фен на xdebug.

Ларавел регистрира описаните в конфигурацията сървъри, само ако няма нищо в pool-а. Ако Memcached има нещо регистрирано, то ще използва него, но това не го прави правилния избор. Можеш да видиш с твоя тест като извикаш getServerList() метода на Memcached. Ако няма нищо, тогава Ларавел си регистрира сървърите описани в твоя конфиг файл и означава, че проблема идва от другаде.

Имаш ли MEMCACHED_USERNAME и MEMCACHED_PASSWORD сетнати? Според твоя тест не ти трябват. Ларавел за да използва sasl масива в конфигурацията трябва да съдържа 2 стойности. Не е описано как Memcached приема null-еви стойности, но бих ти предложил да ги закоментираш или махнеш от масива в конфигурационния файл, така Ларавел няма да се опитва да сетва credentials, понеже дори и да са null стойности count([null, null]) също връща 2.

Другото, което е - в твоя тест не използваш persistent id параметъра, но подаваш такъв на Ларавел. За всеки persistent id се създава различна инстанция и съответно getServerList() ще върне различни резултати, което ще рече, че теста ти не е много коректен.

Още нещо, което можеш да провериш е дали стойностите от env файла реално се сетват.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3357
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Memcache and Memcached

Post by dakata__92 » Mon Nov 30, 2020 2:55 pm

Днес има доста работа по системата. Ако не успея то утре ще изтествам твоите предложения и ще върна отговор. Благодаря за предложенията :!:

Post Reply