Страница 2 из 3

Re: Class 'Memcached' not found

Добавлено: 12 янв 2018, 13:05
4EPHblN
Спасибо большое, dimalondon, тоже получилось подключить.

А почему в OS еще не подключено расширение?? — это, вроде, не сложно.

Re: Class 'Memcached' not found

Добавлено: 12 янв 2018, 13:37
Максим
Так а его не существует для php7, расширения этого. Один чувак взял, говорит вот я попробовал сделал порт, вроде работает, но особо не тестировал. Вы это устанавливаете на свой страх и риск. А на деле расширение уже заброшено как 5 лет, последнее обновление было в 2013 году: https://pecl.php.net/package/memcache

Re: Class 'Memcached' not found

Добавлено: 08 апр 2018, 04:19
Andrei_G_Pastushenko
dimalondon писал(а):
konserv писал(а):Memcached для PHP7 не нашел, зато нашел Memcache (которого нет в OpenServer):
https://github.com/nono303/PHP7-memcache-dll

Было бы нелохо добавить его в OpenServer.
Скачал эти файлы с ГитХаба, но никак не получается подключить Memcache. Беру, к примеру, файл php-7.1.x_memcache.dll из папки PHP7-memcache-dll-master/PHP7-memcache-dll-master/vc14/x86/ts/ переименовываю его с стандартное название php_memcache.dll и ложу в папку C:/OpenServer/modules/php/PHP-7.1/ext/

В настройках OpenServer выбираю конфигурацию:
HTTP: Apache-PHP-7+Nginx-1.0
PHP: 7.1
Memcached: 1.4

Перезагружаю OpenServer, но Memcache не работает. Помогите, что я делаю не так?
Версия OpenServer у меня установлена 5.2.6.
На случай, если кто-то тоже встанет на данном этапе (как правило это пока ещё не совсем опытные разработчики под PHP и именно для вас это пишу), дополню необходимые действия для получения Memcache в актуальной на сегодня сборке OS:

Уточню сразу, что на момент написания в OS имеется PHP 7.2х64, её я использую, а значит в описании будет под неё же. Итак, полный список лично моих, да и необходимых ваших действий:

► Брал dll по указанной Дмитрием ссылке, но самую новую (на момент написания всего как 10 дней) и мне подходящую в директории указанного репозитария .../PHP7-memcache-dll/vc15/x64/ts/php-7.2.x_memcache.dll ;
► Указанную dll переименовал в php_memcache.dll и закинул в директорию \ospanel\modules\php\PHP-7.2-x64\ext (Да, у меня MSWin);
► Далее в директории \OSPanel\userdata\config открывал в редакторе файл PHP-7.2-x64_php.ini, где в блоке с extension прописывал строку (у меня это 160, сразу после ;extension=php_ldap.dll, а как у вас буде не знаю)
extension=php_memcache.dll 
. Дополнительно в блоке [SESSION] поменял способ хранения сессий с файлового на хранение в оперативной памяти (ну мы ж типа ускоряемся). У меня это так:
;session.save_handler = files
session.save_handler = memcache 
;session.save_path = "%sprogdir%/userdata/temp/" 
session.save_path = "tcp://127.0.0.1:11211"
► Перезапускал OS и спокойно пользовался new Memcache под Memcached-1.4-x64

В принципе можно Memcache(d) от энтузиастов (У меня на VPS они идут в комплекте с прочими расширениями :roll: ) использовать на свой страх и риск в PHP7+ для ускорения приложения, храня статику(её можно и в файлах хранить первое время) и результаты ресурсоёмких запросов(тоже есть варианты), но тогда и сессии необходимо для этих же целей хранить там же (как у меня в примере выше), да и неплохо бы тогда взять на вооружение OPcache (как пример) для кэширования байткода. В новых версиях PHP /http://php.net/manual/ru/book.opcache.php/ этот кэш позволяет очень сильно увеличить производительность. Но всё это вопрос стоимости используемой памяти...

Всем добра, успехов, стабильности и высокой производительности!

Re: Class 'Memcached' not found

Добавлено: 21 сен 2018, 21:40
roman_vladislavovich
► Брал dll по указанной Дмитрием ссылке, но самую новую (на момент написания всего как 10 дней) и мне подходящую в директории указанного репозитария .../PHP7-memcache-dll/vc15/x64/ts/php-7.1.x_memcache.dll ;
► Указанную dll переименовал в php_memcache.dll и закинул в директорию \ospanel\modules\php\PHP-7.1-x64\ext
► Далее в директории \OSPanel\userdata\config открывал в редакторе файл PHP-7.1-x64_php.ini и добавил
extension=php_memcache.dll
изменил
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

перегрузил сервер


проверяю кодом
$memcache = new Memcache;
$memcache->connect("localhost",11211); # You might need to set "localhost" to "127.0.0.1"
echo "Server's version: " . $memcache->getVersion() . "<br />\n";
$tmp_object = new stdClass;
$tmp_object->str_attr = "test";
$tmp_object->int_attr = 123;
$memcache->set("key",$tmp_object,false,10);
echo "Store data in the cache (data will expire in 10 seconds)<br />\n";
echo "Data from the cache:<br />\n";
var_dump($memcache->get("key"));

в phpinfo memcached есть
но ошибка все равно Class 'Memcache' not found


Что не так?

Re: Class 'Memcached' not found

Добавлено: 24 сен 2018, 09:34
GeekHacker
А у кого-нибудь работает эта поделка для php-7.2 x86?
У меня лично не выходит подключить.
А вот аналогичная dll, но для x64 вроде как работает?

Re: Class 'Memcached' not found

Добавлено: 01 апр 2020, 04:32
Andrei_G_Pastushenko
Andrei_G_Pastushenko писал(а): 08 апр 2018, 04:19...
...
Всем добра, успехов, стабильности и высокой производительности!
Доброго времени суток, коллеги!
Крик о помощи заставила сделать ошибка ( читайте полностью ):
Fatal error: Uncaught Error: Class 'Memcache' not found in C:\OSPanel\domains\directory\index.php:10 Stack trace: #0 {main} thrown in C:\OSPanel\domains\directory\index.php on line 10
Пока не поменял машину на новую и не столкнулся с необходимостью всё установить с нуля, всё работало на старой машине с более ранней версии OS, в которой я данную проблему решил легко и просто давно уже. Но...
Установил на новую машину под OS Win10 свежий open_server_5_3_5_ultimate
Модули установил следующие:
  • Apache_2.4-PHP_7.2-7.3-x64
  • PHP_7.3-x64_php
  • MySQL-8.0-x64
  • Memcached Version 1.5.10 [ естественно мы все помним, что OS только Memcache ]
В файл конфига PHP уже по пару лет назад отработанной схеме включил запись:
...
;extension = pgsql
extension  = php_memcache.dll ;Ну т.е. добавил эту строку
;extension = phpdbg_webhelper
...
В папку OSPanel\modules\php\PHP_7.3-x64\ext конечно закинул файл, скачанный с
https://github.com/4EPHblN/PHP7-memcache-dll

Пробовал разные варианты и не только по выше указанному источнику, но и с ранее мной используемого:
https://github.com/nono303/PHP7-memcache-dll

По второй ссылке более свежие, чем по первой.
Сразу оговорюсь, что перепробовал вариантов тысячу, менял версии PHP на более низкие, под них менял в папке dll, да и чего я только несколько часов не делал - результат один и тот же. Я даже сам себя перепроверил в когда-то написанном посте:
viewtopic.php?p=23783#p23783

Далее запуск OS, стандартный код проверки:
https://www.php.net/manual/en/memcache.set.php

$memcache_obj = new Memcache;

$memcache_obj->connect('localhost', 11211);

$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50);

echo $memcache_obj->get('var_key');

На что естественно ничего, кроме ошибки не дало, при этом PHPMemcachedAdmin работает ( ессно ) и в PHP info он прописан в PATH, но отдельно как redis или mysqli его нет ни с буквой "d", ни без.

Пробовал и Memcached
$m = new Memcached();
echo get_class($m);
Но это привело, ожидаемо конечно же, к ошибке Fatal error: Uncaught Error: Class 'Memcached' not found

Конечно же попробовал Redis-3.2-x64, ну вдруг не какой-то баг сборки или чего-то там, а во мне:
$redis = new Redis();
$redis->pconnect('localhost');
$redis->set('test', 'test');
echo $redis->get('test');
$redis->set('test', '<br> testing test');
echo $redis->get('test');
//$redis->del('test');
//echo $redis->get('test');
Конечно же Redis полетел без всяких проблем.

В общем крик помощи к Вам всем, уважаемые коллеги! Хелп!

Re: Class 'Memcached' not found

Добавлено: 03 апр 2020, 03:59
Andrei_G_Pastushenko
Andrei_G_Pastushenko писал(а): 01 апр 2020, 04:32 Доброго времени суток, коллеги!
Крик о помощи заставила сделать ошибка ( читайте полностью ):
Fatal error: Uncaught Error: Class 'Memcache' not found in C:\OSPanel\domains\directory\index.php:10 Stack trace: #0 {main} thrown in C:\OSPanel\domains\directory\index.php on line 10
.......
........
В общем крик помощи к Вам всем, уважаемые коллеги! Хелп!
Решено!
Я просто снёс OS_Ultimate_5.3.5, поставил OS_Basic_5.3.5. Как это связано я не знаю, но я решил всё с самого нуля и пошагово повторить, даже файл скачивал с полной последовательностью ( см. ниже ), что в результате дало то, что я хотел изначально.
Итак, как писал выше всё снёс полностью. Потом стандартно всё:
  • Выбираем версию файла согласно своего окружения:
phpinfo();
  1. Смотрим в графе Compiler какой нам нужен vc1х
  • Смотрим в графе Architecture какой нам необходим х00
  • Смотрим в графе PHP Extension Build что нам надо ts или nts
Качаем и сохраняем либо как есть, либо сразу с переименованием, но я качаю как есть и сразу для разных версий РНР 7.х.
  • Далее скачанный файл переименовываем в php_memcache.dll и перемещаем в папку ext что в каталоге с вашей рабочей версией php ( у меня это OSPanel\modules\php\PHP_7.3-x64 )
  • Открываем файл php.ini и добавляем в Extensions запись extension = php_memcache
; ----------------------------
; Extensions
; ----------------------------
;Прочий код блока Extensions
extension = php_memcache
;Прочий код блока Extensions
  • Сервер перезапускаем и снова обращаемся к информации о РНР ( Можно использовать "Дополнительно" -> "Информация РНР" )
phpinfo();
  • Ищем раздел memcache
Изображение
  • Если он там появился, то пробуем любой тестовый код для проверки работы Memcache, типа:
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$memcache->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50);
echo $memcache->get('var_key');
  • Работаем над проектом :D

Re: Class 'Memcached' not found

Добавлено: 07 апр 2020, 20:43
maxya
Andrei_G_Pastushenko писал(а): 03 апр 2020, 03:59 Решено!
Не решено. Была ошибка
Fatal error: Uncaught Error: Class 'Memcached' not found

Вы же поставили Memcache и ошибка не уйдёт.
Я так понимаю с Memcached на Windows 10 проблему не решить?
У меня старое DLE и там только memcached

Re: Class 'Memcached' not found

Добавлено: 08 апр 2020, 11:11
maxya
https://github.com/lifenglsf/php_memcached_dll

тут либы под винду.
именно memcached
закинуть в \modules\php\PHP_7.3-x64\ext
подключить
extension = php_memcache
extension = php_memcached

и положить libmemcached.dll
в \modules\memcached\Memcached-1.5-x64

Re: Class 'Memcached' not found

Добавлено: 10 апр 2020, 22:45
Andrei_G_Pastushenko
maxya писал(а): 08 апр 2020, 11:11 https://github.com/lifenglsf/php_memcached_dll

тут либы под винду.
именно memcached
закинуть в \modules\php\PHP_7.3-x64\ext
подключить
extension = php_memcache
extension = php_memcached

и положить libmemcached.dll
в \modules\memcached\Memcached-1.5-x64
От меня личное благодарю!