J'ai installé le fichier binaire memcached dans Windows 7 et l'ai démarré en tant que serveur.
Lorsque je tape wmic process, obtenez une description, exetuablepath | findstr memcached.exe J'obtiens la réponse suivante: memcached.exe c:\memcached\memcached.exe en ligne de commande.
Lorsque j'essaie d'exécuter l'exemple de code sur php.net, j'obtiens sur mon navigateur:
Erreur fatale: La classe 'Memcache' ne figure pas dans C:\DocumentRoot\Framework\index.php à la ligne 3 Pile d'appels: 0.0010 335928 1. {main} () C:\DocumentRoot\Framework\index.php: 0
Alors, qu'est-ce que je fais mal? J'utilise memcache.dll puisque memcached.dll n'existe pas pour Windows, je crois?
Ceci est pour les futurs visiteurs!
Vous pouvez obtenir l'extension php "memcache" pour utiliser memcached avec php sur windows ici http://downloads.php.net/pierre/
Memcached est le démon du serveur et vous pouvez l’obtenir pour Windows ici http://splinedancer.com/memcached-win32/
Une note pour tous ceux qui rencontrent des problèmes pour faire fonctionner Memcached sous Windows.
Sur la base des commentaires, je suppose que vous n’avez pas téléchargé ni installé memcached, mais que vous avez correctement installé le module memcached pour PHP. En gros, vous avez les clés de la voiture, mais vous n’avez pas la voiture.
memcached est construit pour Linux, mais il a été porté par d'autres personnes sous Windows. Ce tutoriel est ancien, mais il pourrait correspondre à ce que vous recherchez: http://www.codeforest.net/how-to-install-memcached-on-windows-machine
Votre composer.json
devrait contenir ext-memcached
, mais il ne sera pas installé, il y aura simplement une erreur s'il est manquant. Voici différentes façons de l'obtenir:
Si je comprends bien, à compter de 2018, il n’existe pas de port Windows binaire de JUST Memcached pour PHP 7 . Il existe toutefois une version pré-packagée dans Laragon ou alternativement Winginx
Il y a une poignée personnes proposant DLL compilées sur github (64 bits, et thread-safe offert)
ubuntu
Sudo add-apt-repository ppa:ondrej/php
Sudo apt-get update
Sudo apt install php-memcached
Redémarrez php fpm si vous l'utilisez Sudo service php7.2-fpm restart
Vous pouvez compiler les liaisons php mais le paquet Windows de memcached a été cassé pour 4 ans (à partir de 2018)
Voici un wrapper sale autour de Memcached appelé StaticCache, que vous pouvez utiliser en pincement pour lire/écrire des valeurs à partir du disque. De toute évidence, il est bien plus lent que memcached, il est donc censé être un complément au développement Windows. Si vous en avez envie, vous pouvez le définir comme un polyfill du même nom.
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;
}