Страница 1 из 1

Memcache под php7

Добавлено: 30 мар 2016, 00:03
Hagnar
Совет для тех кому необходим memcache под php7
Информация взята из последнего сообщения с сайта https://bugs.php.net/bug.php?id=70751

Суть в том, что на данный момент сложно найти готовую memcache библиотеку для php7, поэтому её можно скомпилировать ручками.

Для этого необходимо:

1. Скачать и установить Visual C++ 14.0 (Visual Studio 2015) - бесплатно с сайта майкрософта
2. После установки запускаем "Developer Command Prompt for VS2015" - консоль разработчика VS2015
3. Скачать архив исходников пхп7 с сайта http://windows.php.net/download/ (Ссылка "Download source code")
4. Скачать последний набор утилит с сайта http://windows.php.net/downloads/php-sdk/ (На текущий момент php-sdk-binary-tools-20110915.zip)
5. Скачать с сайта http://windows.php.net/downloads/php-sdk/ архив зависимостей для необходимой версии и разрядности php (Например deps-7.0-vc14-x86.7z)
6. Создаем папку для работы, например c:\php-sdk\ и переходим в ней через консоль разработчика > cd c:\php-sdk\
7. Распаковывем в неё архив из пункта 4
8. Запускаем команду > bin\phpsdk_buildtree.bat phpdev
9. В корне появится папка phpdev, переходим в неё и переименовываем папку vc9 в vc14
10. Переходим в папку C:\php-sdk\phpdev\vc14\x86 или x64 (тут нужно уточник, я как и автор не пробовал компилировать под x64) и распаковываем в неё исходники из пункта 3 (Получится что-то вроде C:\php-sdk\phpdev\vc14\x86\php-7.0.4-src)
11. Так же в папку C:\php-sdk\phpdev\vc14\x86\deps закидываем содержимое архива из пункта 5
12. Скачиваем memcache https://github.com/websupport-sk/pecl-memcache
13. Создаем папки C:\php-sdk\phpdev\vc11\x86\pecl\memcache и закидываем туда содержимое архива из пункта 12
14. Запускаем команду > bin\phpsdk_setvars.bat
15. Переходим в C:\php-sdk\phpdev\vc14\x86\php-7.0.2-src и последовательно запускаем
16. > buildconf
17. > configure --disable-all --enable-cli --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --enable-memcache=shared
18. > nmake
19. В папке C:\php-sdk\phpdev\vc14\x86\php-7.0.2-src появится папка Release_TS в которой в корне будет лежать скомпилированный php_memcache.dll пригодный для использования с php7, отправляем его в папку OpenServer\modules\php\PHP-7\ext

Re: Memcache под php7

Добавлено: 31 мар 2016, 01:31
alez
А 64 битная либа невозможна под винду?

Re: Memcache под php7

Добавлено: 19 мар 2019, 18:26
4EPHblN
Возможна: https://github.com/4EPHblN/PHP7-memcache-dll
Memcache вплоть до версии PHP 7.3 x86, x64.
Качаем — копируем — наслаждаемся ))

Re: Memcache под php7

Добавлено: 01 апр 2020, 04:29
Andrei_G_Pastushenko
Доброго времени суток, коллеги!
Крик о помощи заставил сделать ошибка:
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: Memcache под php7

Добавлено: 03 апр 2020, 04:05
Andrei_G_Pastushenko
Andrei_G_Pastushenko писал(а): 01 апр 2020, 04:29 Доброго времени суток, коллеги!
Крик о помощи заставил сделать ошибка:
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
В общем крик помощи к Вам всем, уважаемые коллеги! Хелп!
Я снова решил этот момент, хотя ранее писал, что забуксовал. Решение описал в этом посте:
viewtopic.php?p=27267#p27267