MemcachedバイナリファイルをWindows7にインストールし、サーバーとして起動しました。
Wmic process get descriptionと入力すると、exetuablepath | findstr memcached.exeコマンドラインで次の応答が返されます:memcached.exe c:\ memcached\memcached.exe。
Php.netでサンプルコードを実行しようとすると、ブラウザが表示されます。
致命的なエラー:クラス 'Memcache'が3行目のC:\ DocumentRoot\Framework\index.phpに見つかりませんコールスタック:0.0010 335928 1. {main}()C:\ DocumentRoot\Framework\index.php:
それで、私が間違っているのは何ですか? memcached.dllがWindowsに存在しないため、memcache.dllを使用しています。
これは将来の訪問者のためです!
ここで、php拡張機能「memcache」を取得して、Windows上のphpでmemcachedを使用できます http://downloads.php.net/pierre/
Memcachedはサーバーデーモンであり、ここでWindows用に取得できます http://splinedancer.com/memcached-win32/
MemcachedをWindowsで動作させる際に問題が発生した場合の注意。
コメントに基づいて、memcachedをダウンロードしてインストールしていないと思いますが、PHP用のmemcachedモジュールは正常にインストールされています。基本的に、あなたは車の鍵を手に入れましたが、車を持っていません。
memcachedはLinux用に構築されていますが、他の人によってWindowsに移植されています。このチュートリアルは古いですが、探しているものかもしれません: http://www.codeforest.net/how-to-install-memcached-on-windows-machine
きみの composer.json
すべきだった ext-memcached
にリストされていますが、インストールされません。欠落している場合はエラーがスローされます。これを取得するさまざまな方法があります。
2018年の時点で、PHP 7のJUSTMemcachedのバイナリWindowsポートはありませんが、 Laragon または代わりに Winginx
Githubで コンパイル済みDLL を提供している 少数の 人がいます(64ビット、スレッドセーフ提供)
ubuntu
Sudo add-apt-repository ppa:ondrej/php
Sudo apt-get update
Sudo apt install php-memcached
使用する場合はphpfpmを再起動しますSudo service php7.2-fpm restart
php bindings をコンパイルできますが、 memcached のwindowsパッケージが4年間壊れています(2018年現在)
これは、ディスクから値を読み書きするためにピンチで使用できるStaticCacheと呼ばれるMemcachedのダーティラッパーです。明らかにmemcachedよりもはるかに遅いので、Windows開発のシューインとなることだけを目的としています。気になる場合は、これを同じ名前のポリフィルとして定義できます
function StaticCacheClear()
{
foreach (scandir(sys_get_temp_dir()) as $file) {
if (StringBeginsWith($file, "staticcache"))
{
$path = sys_get_temp_dir() ."/". $file;
unlink($path);
}
}
global $Memcache;
if ($Memcache) $Memcache->flush();
}
// REMOVE if you don't want a global way to clear cache
if (isset($_GET['clear_static_cache'])) {
StaticCacheClear();
}
function MemcacheGet($key)
{
global $Memcache;
$value = $Memcache ? $Memcache->get($key) : (file_exists($key)?file_get_contents($key):null);
return !$Memcache? $value : (Memcached::RES_NOTFOUND === $Memcache->getResultCode() ? null : $value);
}
function StaticCacheKey($key)
{
global $Memcache;
$cacheVersion = "MY_APP_VERSION_HERE";
$uniqueKey = "staticcache_{$key}_" . date("Ymd") . "$cacheVersion.cache";
$filename = sanitize_file_name($uniqueKey);
$filename = sys_get_temp_dir() . '/' . $filename;
return $Memcache ? $uniqueKey : $filename;
}
function StaticCacheWrite($key, $value)
{
global $Memcache;
if (isset($_GET['disable-cache'])) return null;
if ($Memcache)
$Memcache->set(StaticCacheKey($key), serialize($value));
else
file_put_contents(StaticCacheKey($key), serialize($value));
}
function StaticCacheRead($key)
{
global $Memcache;
$key = StaticCacheKey($key);
$value = MemcacheGet($key);
return $value !== null ? unserialize($value) : null;
}