php - with - unable to load dynamic library memcache so




Windows 10上のMemcache PHPエクステンションは断続的に動作します (2)

私はapache / php windows 10にmemcacheエクステンションを持っています(詳細は最後にあります)

簡単なテストを作成しました:

$memcache = new Memcache;
$memcache->addServer("ext-memcached.e-memcached.xxx.net",11211);
$memcache->addServer("ext-memcached.e-memcached2.xxx.net",11211);
$memcache->addServer("ext-memcached.e-memcached3.xxx.net",11211);

$key='xxx_54921';
$settings = $memcache->get($key);
print_r ($settings);

memcacheサーバーはAWS上にあり、うまく機能します(本番サーバー)。 このテストコードは機能します - memcacheサーバーから値を取得します。 ただし、数分待ってから更新しても値は返されません。 それからもう一度リフレッシュすると値が返されます。

同じコード/設定は他の開発用コンピュータからも動作します。

何が原因でしょうか?

Config:
PHP Version 5.6.34
    Windows NT SPECTRE 6.2 build 9200 (Windows 8 Home Premium Edition) i586
Build Date  Feb 28 2018 17:45:55
Compiler    MSVC11 (Visual C++ 2012)
Architecture    x86

Memcache extension:
ts x86 version from here:
https://windows.php.net/downloads/pecl/releases/memcache/3.0.8/

memcache info:
memcache support    enabled
Version 3.0.8
Revision    $Revision: 329835 $
Directive   Local Value Master Value
memcache.allow_failover 1   1
memcache.chunk_size 32768   32768
memcache.compress_threshold 20000   20000
memcache.default_port   11211   11211
memcache.hash_function  crc32   crc32
memcache.hash_strategy  standard    standard
memcache.lock_timeout   600 600
memcache.max_failover_attempts  20  20
memcache.protocol   ascii   ascii
memcache.redundancy 1   1
memcache.session_redundancy 2   2

memcachedサービスは実際にはPHPのmemcachedエクステンションをインストールしません。 キャッシュを保存するために使用されるmemcachedサーバーをインストールするだけです。

あなたは最初にPECLレポジトリからWindows DLLをダウンロードする必要があります(青いWindows DLLリンクをクリックしてください)。 次に、extension = php_memcache.dll行をSAPIの正しいphp.iniファイルに追加する必要があります。 また、拡張DLLファイルはXAMPPをインストールするための正しいパスに配置する必要があります。

Apacheの場合は、ドキュメントのルートに次の行を使ってスクリプトを作成します。

CLI SAPIでは、php.exe --iniを使用して同じことを実行できます。 繰り返しますが、設定パスが変更されている場合はXAMPPパッケージに頼る必要があるかもしれません(これはコンパイル時ディレクティブなので)。

php.iniを変更した後は、変更を有効にするためにPHPを再起動する必要があります。

あなたが参照することができます: https://pureform.wordpress.com/2008/01/10/installing-memcache-on-windows-for-php/https://pureform.wordpress.com/2008/01/10/installing-memcache-on-windows-for-php/ / https://pureform.wordpress.com/2008/01/10/installing-memcache-on-windows-for-php/

WindowsでPHP 7を使用しているので、PECLからコンパイルされたDLLはWindows用のApacheでは実際には機能しない可能性があることに注意することもおそらく重要です。 だからあなたは正しいバージョンをダウンロードしていることを確認してください。 私が言うことができる限り、バージョンはPHP 5.6までで動作するようにコンパイルされているだけです。 コメントに記載されているように、PHP 7用のgithub代替物はhttps://github.com/nono303/PHP7-memcahe-dllで入手可能で、スレッドセーフではない状態でテストされています。 そのため、これはWindows上のCLIスクリプトに対してのみ機能する可能性があります。


memcache.redundancy memcache.redundancy設定を確認してください。データがすべてのmemcachedノードで利用できるわけではありません。 あなたの例の場合は3に設定すれば十分です。







libmemcache