php-Memcached的安装及使用
一、简介及安装
memcached是一个高性能分布式的内存对象缓存系统, 通常被用于降低数据库加载压力以提高动态web应用的响应速度。
此扩展使用了libmemcached库提供的api与memcached服务端进行交互。它还提供了一个session处理器(memcached)。
关于memcached的安装,可参考这篇文章:Ubuntu中memcached的安装和配置。
在安装php扩展memcached之前,需要先安装libmemcached,libmemcached是memcached的C/C++本地客户端库。
安装libmemcached之前,还要先安装libcloog-ppl0,否则编译安装过程中会出错:
sudo apt-get install libcloog-ppl0
然后从这里http://libmemcached.org/libMemcached.html下载所需的libmemcached源码安装包,解压到指定目录,进入该目录,然后执行以下指令:
./configure --prefix=/usr/local/libmemcached make sudo make install
然后就可以进行php的memcached扩展的安装了,从这里下载所需的源码安装包:http://pecl.php.net/package/memcached,解压到指定目录,进入该目录,然后执行以下指令:
phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached make sudo make install
在安装过程中可能会报错:
未知类型名称:memcached_server_instance_st
而导致make失败,解决办法如下:
在memcached扩展解压目录下找到这个文件:php_libmemcached_compat.h,然后在其中添加下面这行
typedef const struct memcached_server_st *memcached_server_instance_st;
再次make,就OK了。
安装成功后,在php.ini中添加extension=memcacached,然后重启apache,查看phpinfo,看到如下部分
证明安装成功。
二、超时时间
一些存储命令在发送时会包含一个失效值(与一个元素或一个客户端操作请求相关)到服务端。所有这类用法,实际发送的值可以 是一个Unix时间戳(自1970年1月1日起至失效时间的整型秒数),或者是一个从现在算起的以秒为单位的数字。对于后一种情况,这个 秒数不能超过60×60×24×30(30天时间的秒数);如果失效的值大于这个值, 服务端会将其作为一个真实的Unix时间戳来处理而不是 自当前时间的偏移。
如果失效值被设置为0(默认),此元素永不过期(但是它可能由于服务端为了给其他新的元素分配空间而被删除)。
三、回调
1.结果回调
Result callbacks方式在通过 Memcached::getDelayed()或Memcached::getDelayedBykey()方法获取元素后,为结果集中每个元素调用一次。 回调函数可以接收到一个Memcached对象合一个数组描述的元素信息,此回调函数不需要返回任何信息。
Example #1 结果回调示例
<?php $m = new Memcached(); $m->addServer('localhost', 11211); $items = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ); $m->setMulti($items); $m->getDelayed(array('key1', 'key3'), true, 'result_cb'); function result_cb($memc, $item) { var_dump($item); } ?>
以上例程的输出类似于:
array(3) { ["key"]=> string(4) "key1" ["value"]=> string(6) "value1" ["cas"]=> float(49) } array(3) { ["key"]=> string(4) "key3" ["value"]=> string(6) "value3" ["cas"]=> float(50) }
2.通读缓存回调
通读缓存回调在一个元素没有从服务端检索到的时候被调用。这个回调函数会接收到Memcached对象,请求的key以及 一个引用方式传递的值变量等三个参数。此回调函数负责通过返回true或false来决定在key没有值时设置一个默认值。 如果回调返回true,Memcached会存储"传出参数"(引用传递的值变量)存储的值到memcached服务端并将其返回到原来 的调用函数中。仅仅 Memcached::get()和 Memcached::getByKey() 支持这类回调,因为Memcache协议不支持在请求多个key时提供未检索到key的信息。
Example #2 通读回调示例
<?php $m = new Memcached(); $m->addServer('localhost', 11211); $profile_info = $m->get('user:'.$user_id, 'user_info_cb'); function user_info_cb($memc, $key, &$value) { $user_id = substr($key, 5); /* 从数据库读取个人信息 */ /* ... */ $value = $profile_info; return true; } ?>
四、Sessions支持
memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端。 一个完全独立的memcached实例将会在内部使用,因此如果需要您可以设置一个不同的服务器池。session的 key被存储在前缀memc.sess.key.之下,因此, 如果你对session和通常的缓存使用了 同样的服务器池,请注意这一点。 译注:另外一个session和通常缓存分离的原因是当通常的缓存占满了memcached服务端后,可能会导致你的session被 从缓存中踢除,导致用户莫名的掉线。
session.save_handler 设置为memcached开启memcached的session处理器。session.save_path定义一个逗号分隔的hostname:port样式的session缓存服务器池,例如: "sess1:11211, sess2:11211".
五、Memcached类
表征到memcached服务集群的连接。
Memcached::add — 向一个新的key下面增加一个元素
Memcached::addByKey — 在指定服务器上的一个新的key下增加一个元素
Memcached::addServer — 向服务器池中增加一个服务器
Memcached::addServers — 向服务器池中增加多台服务器
Memcached::append — 向已存在元素后追加数据
Memcached::appendByKey — 向指定服务器上已存在元素后追加数据
Memcached::cas — 比较并交换值
Memcached::casByKey — 在指定服务器上比较并交换值
Memcached::__construct — 创建一个Memcached实例
Memcached::decrement — 减小数值元素的值
Memcached::decrementByKey — Decrement numeric item's value, stored on a specific server
Memcached::delete — 删除一个元素
Memcached::deleteByKey — 从指定的服务器删除一个元素
Memcached::deleteMulti — Delete multiple items
Memcached::deleteMultiByKey — Delete multiple items from a specific server
Memcached::fetch — 抓取下一个结果
Memcached::fetchAll — 抓取所有剩余的结果
Memcached::flush — 作废缓存中的所有元素
Memcached::get — 检索一个元素
Memcached::getAllKeys — Gets the keys stored on all the servers
Memcached::getByKey — 从特定的服务器检索元素
Memcached::getDelayed — 请求多个元素
Memcached::getDelayedByKey — 从指定的服务器上请求多个元素
Memcached::getMulti — 检索多个元素
Memcached::getMultiByKey — 从特定服务器检索多个元素
Memcached::getOption — 获取Memcached的选项值
Memcached::getResultCode — 返回最后一次操作的结果代码
Memcached::getResultMessage — 返回最后一次操作的结果描述消息
Memcached::getServerByKey — 获取一个key所映射的服务器信息
Memcached::getServerList — 获取服务器池中的服务器列表
Memcached::getStats — 获取服务器池的统计信息
Memcached::getVersion — 获取服务器池中所有服务器的版本信息
Memcached::increment — 增加数值元素的值
Memcached::incrementByKey — Increment numeric item's value, stored on a specific server
Memcached::isPersistent — Check if a persitent connection to memcache is being used
Memcached::isPristine — Check if the instance was recently created
Memcached::prepend — 向一个已存在的元素前面追加数据
Memcached::prependByKey — Prepend data to an existing item on a specific server
Memcached::quit — Close any open connections
Memcached::replace — 替换已存在key下的元素
Memcached::replaceByKey — Replace the item under an existing key on a specific server
Memcached::resetServerList — Clears all servers from the server list
Memcached::set — 存储一个元素
Memcached::setByKey — Store an item on a specific server
Memcached::setMulti — 存储多个元素
Memcached::setMultiByKey — Store multiple items on a specific server
Memcached::setOption — 设置一个memcached选项
Memcached::setOptions — Set Memcached options
Memcached::setSaslAuthData — Set the credentials to use for authentication
Memcached::touch — Set a new expiration on an item
Memcached::touchByKey — Set a new expiration on an item on a specific server

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
