我使用时将两个模块列出为已安装/配置的模块: php -m 或我使用: php -i 但是当我使用时: $m = new Memcache; // or $m = new Memcache(); // or $m = new Memcached(); //or $m = new Memcached; 我有以下错误: Fatal error: Class 'Memcached' not found 我在Mac -OS X(10.5.7)上运行,默认安装Apache&PHP.此外,我已经在127.0.0.1:11211和php-Memcached Library要求的LibMemcache上作为守护程序跑步.我已经重新启动了apache吨,甚至完成了一台机器. 有人知道为什么在命令行中显示模块/扩展名,而不是在我的phpinfo()中显示?实际上,我很难过,经过3个小时的谷歌搜索,我准备放弃. 另外,请注意,我的phpinfo()输出我的
以下是关于 memcached 的编程技术问答
我的设置: 4个网络服务员 静态内容服务器(NFS Mount) 2 dB服务器 2"做魔术"服务器 另外的8台机器指定为多功能. 我正在为三种缓存机制编写包装器,以便可以以某种归一化的方式使用它们:文件系统,备忘录和APC.我正在尝试提出示例供使用(以及每个缓存中实际放置的内容). 文件系统 处理我们生成的内容,然后在静态上使用. RSS feed,旧报告数据,用户特定页面等...所有这些都已缓存到静态服务器. memcached PHP会话数据,MySQL查询结果,通常需要在我们的系统中可用.我们有8台可以包含在服务器池中的机器. apc 我不知道.这两个" do magic"服务器不是任何分布式系统的一部分,因此他们似乎可以缓存查询结果APC并从那里工作.过去,我想不出什么. 查询缓存 鉴于我们使用SQL的性质,查询缓存降低了性能.我已经禁用了这个. 通常,应将哪种类型的数据存储在哪里?这个设置甚至有意义吗?
使用memcached和PHP备忘录库,当执行A 获得? 解决方案 否,这种数据无法从客户端端检索.如果您真的需要它,请将其与数据一起存储在序列化数组或其他内容中.另外,请查看此帖子以防万一正在尝试做类似的事情. 其他解决方案 使用此示例.它通过其到期数据显示了所有服务器键,因此您可以获取当前密钥的到期时间. function getMemcacheKeys() { $memcache = new Memcache; $memcache->connect('192.168.1.18', 11211) or die ("Could not connect to memcache server"); $list = array(); $allSlabs = $memcache->getExtendedStats('slabs'); foreach($allSlabs as $server => $slabs) {
我已经创建了一个论坛,我们正在实施APC和memcache缓存解决方案,以节省数据库. 我开始使用诸如"类别:: getall"之类的密钥实现缓存层,如果我有特定于用户的数据,我会用用户ID之类的内容附加键,因此您会得到"User::getFavoriteThreads|1471".当用户添加新的喜欢的线程时,我将删除缓存键,并将重新创建条目. 但是,问题是: 我想在论坛中缓存线程.很简单,"论坛:: getThreads | $ iforumid".但是...通过分页,我必须将其分成几个缓存条目,例如 "Forum::getThreads|$iForumId|$iLimit|$iOffset". 没关系,直到有人在论坛上发布新线程.现在,无论限制和偏移是什么. ,我都必须删除"Forum::getThreads|$iForumId"下的所有键. 解决这个问题的好方法是什么?我真的宁愿不会循环遍历所有可能的限制和偏移,直到找到不再匹配的东西. 谢谢.
我使用file_get_contents从磁盘上加载XML文件,作为测试,我发现可以在3.99秒内使用file_get_contents() 1,000次加载156K文件.我已经将完成加载的部分分组并用memcache层代替,在我的开发机上找到我可以在4.54秒内完成同一文档的1000个负载. 我很欣赏file_get_contents()会进行一些缓存,但看起来它实际上比著名的缓存技术更快.在单个服务器上,file_get_contents()的性能是否尽可能好? 我在PHP 5.2.17上通过Macports,OS X 10.6.8. 编辑:我在此大小的XML文档上找到了,使用MEMCACHE_COMPRESSED标志有很小的好处.通过memcache进行的1,500个负载是在6.44秒(带有压缩)而不是6.74(无)的.但是,两者都比file_get_contents慢,file_get_contents在5.71秒内执行相同数量的负载 解决方案 因为fi
从php5.2.6升级为PHP 5.3后.它接缝,我还必须重新安装PHP Memcache模块. 因此,我下载了最新版本的memcache(3.0.6),然后遵循此文档: http://www.php.net/manual/manual/manual/en/en/en/in/install.pecl .pear.php pecl install memcache 导致以下错误消息: No releases available for package "pecl.php.net/memcache" install failed 这里发生了什么?顺便说一句:服务器未连接到Internet,但这不是问题,对吗?! 解决方案 回答我自己的问题,以提高@oz_和@martswite 的知识范围 pecl扩展的脱机安装工作类似于以下方式: 1.)从 http://pecl.php.php.net/packages.phpages.phppages.php
我需要在$_SESSION中存储许多阵列,以防止从mySQL检索信息.可以吗? $_SESSION中的"太多"信息是多少,或者没有任何"太多"?谢谢. P.S.或者最好使用 ? 解决方案 您可以在会话中存储的数据限制受到会话存储层的限制.默认会话存储是文件系统,一个会话存储在一个文件中.会话变量的名称/array-key的名称以及它的数据以及其数据中的名称中.管道符号将变量名称和值彼此分开. 如果您使用字符串存储数组,则该文件将大于字符串的长度,以及键的长度和元数据的小开销以及可变名称的大小. 文件的大小受文件系统的限制.例如,在ext3中,每个文件是16千兆字节.所以这是一个"太多".您无法将更多的数据存储到会话中,而不是存储层允许您的数据. 我能想到的下一个限制是您的记忆之一.由于PHP需要将数据从文件加载到内存中,并在请求结束时将其从内存到文件存储.因此,如果您有一个 php 然后,这实际上将限制会话的大小.例如,PHP 5.2中的标准内存限制为16
在现有数据库查询周围包裹可选的备用缓存非常容易.例如: 旧(仅DB): function getX x = get from db return x end new(带有memcache的DB): function getX x = get from memcache if found return x endif x = get from db set x in memcache return x end 事实是,这并不总是您想缓存的方式.例如,进行以下两个查询: -- get all items (recordset) SELECT * FROM items; -- get one item (record) SELECT * FROM items WHERE pkid = 42; 如果我要使用上述伪代码来处理缓存,我将两次存储项目42的所有字段.一次进入大记录,一次自
我正在看 memcache上的php docs $mem->connect('localhost', 11211)我可以做 $mem->addServer('localhost', 11211) 这样,如果我最终不使用memcache连接,它不会打扰连接. 这让我想知道,为什么有人会在addServer()上使用connect()? 这似乎是可能的不必要的连接.我想念什么吗? 解决方案 http://www.php.net/manual/en/memcache.pconnect.php" rel =" noreferrer"> pconnect 似乎是更低的级别呼叫,该级别的呼叫是执行单个任务而没有太多高架开销的单个任务. addServer otoh otoh更高级别,管理多个服务器,在管理几个服务器,何时重试其中一个失败了,等等.我的印象是后者依靠前者来完成任务. 从最终用户的角度来看,使用较低级别的功能实际上几乎没有优势单个模拟的服务器,不需要保持
我在CentOS 6.4上安装了PHP 5.3.3,memcached.so扩展名,HTTPD以2.2.15-26版本运行.这是我的index.php: $mc = new \Memcached(); $mc->addServer('127.0.0.1', 11211); $mc->set("test", "blah"); var_dump($mc->getResultCode()); var_dump($mc->getResultMessage()); var_dump($mc->get("test")); die; 当我从命令行运行它时,它起作用.我得到以下内容: 10:22:33 $ php index.php int(0) string(7) "SUCCESS" string(4) "blah" MEMCACHE服务器还可以从Telnet工作.但是,当我从网络上运行index.php时,失败了.我得到以下(从查看网页源): int(47) string(
在拉维尔(Laravel Cache::tags('bans')->put($result->ip, $result->reason); ,但我似乎找不到一种使用特定标签的所有物品的方法.是否可以检索具有特定标签的所有项目? 喜欢: Cache::tags('bans')->all(); 或类似的东西 解决方案 我认为您使用了错误.作为第一个参数,您将缓存的密钥作为第二个值,而第三个值则在几分钟内到期时间. 如果您想通过理性缓存一些禁令,例如假设您在PHP中有一些垃圾邮件的用户,则可以使用类似的东西: $bans = [ [ 'ip' => 'test ip', 'reason' => "spam: test reason", ], [ 'ip' => 'test ip2 ', 'reason' => "spam: test reason 2", ] ]; Ca
同事! 我正在使用memcache(2.2.6)客户端库(http://pecl.php.net/package/memcache)运行PHP 5.3(5.3.8)来处理Memcached Server. 我的目标是为会话引擎提供故障转移解决方案: 只有本地php会话支持(没有自定义处理程序) 池中的几个备用服务器 我期望的是,如果有一个备用的服务器之一,PHP将尝试使用池中的第二个服务器[将成功连接并变得快乐],但是当池中第一个纪念服务器中的第一个纪念服务器降低时,i 'm收到以下错误: Session start failed. Original message: session_start(): Server 10.0.10.111 (tcp 11211) failed with: Connection refused (111) 相关的PHP设置为: session.save_handler memcache session.save_path
我对在哪里实施缓存部分有了一些想法.您认为最合适的实施场所在哪里? 在每个型号内部或控制器中? 方法1(psuedo代码): // mycontroller.php MyController extends Controller_class { function index () { $data = $this->model->getData(); echo $data; } } // myModel.php MyModel extends Model_Class{ function getData() { $data = memcached->get('data'); if (!$data) { $query->SQL_QUERY("Do query!"); } return $data; } } 方法
我最近尝试实施备忘录以节省PHP的会话. 我在我的php.ini中修改了session.save_handler,并且在大多数情况下可以正常工作.会议保存在其中.但是,偶尔,我会在某些会话中收到这个奇怪的消息: PHP警告:未知:未能编写会话数据(Memcached).请验证session.save_path的当前设置正确(x.x.x.x:11211)在第0行中未知. 会话数据是相同的,在Memcached的1MB屏障下,我还没有看到此消息的出现模式...也许每分钟几次.该网站通常在中等负载下,同时进行150个用户. 解决方案 如果您使用的是 memcache ,那么save_path必须具有tcp://前缀. 如果您使用的是 memcached ,则save_path不应具有tcp://前缀. 其他解决方案 答案是memcached对象最大的1MB(默认) 如果您的数组或对象超过此限制,则将神奇地删除对象:) 您的会话中的所有项目都将被删除
我只能找到php_memcache.dll,在搜索几个小时后找不到php_memcached.dll ... 解决方案 您可以尝试以下方法:memcached-client来自 https://github.com/github.com/fwolf/memcached-client : "由于现在没有php memcach的扩展名,因此很难构建开发设想,因此此类会有所帮助. in Inpried: http://github.com/joonas-fi/joonas-fi/xsslib-memcached/a>" 用法: 就像php_memcached扩展名,新的备用对象等一样. $m = new Memcached(); $m->addServer('localhost', 11211); $m->set('foo', 'bar'); $m->get('foo'); 支持的方法: addServer addServers delete
ive最近在我的网站上实现了Memcache,该网站受到了沉重的MySQL负载(MySQL尽我所能进行了优化).它解决了我所有的负载问题,并且网站运行精美. 现在面临的问题是陈旧的缓存值.我在大多数页面上都有1小时的自动到期时间,当DB Chnages中的值时,我还会删除密钥,但是我很难保持跟踪并有效地清除所有键. 在某些页面上,它很琐碎.我可以使密钥为item_id(例如item_4653),并且当更新数据或删除该项目时,将清理键. 但是,在大多数页面上,我将脚本文件名 + querystring,md5 it命名,并将其用作memcache的关键.这对于复杂的URL特别有用(非常常见). 例如,我已加载以下页面. index.php?search_keywords = good &search_section = 1&sort = repares&page = 2 它将包含一个项目列表,这些项目将从memcache获取.然后,另一个用户提交了一个项
php -v: PHP 5.5.10-1+deb.sury.org~precise+1 (cli) (built: Mar 27 2014 16:18:01) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with XCache v3.1.0, Copyright (c) 2005-2013, by mOo with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies with XCache Optimizer v3.1.0, Copyright (c) 2005-2013, by mOo with XCache Cacher v3.1.0, Copyright (c) 2005-2013, by mOo w
我有一个单个服务器网站每天推动200k unqiues,而流量大约每40天加倍(无论如何在过去的5个月中). 我几乎只计划缓存MySQL_Query功能的输出一个小时左右.如果缓存比那年龄大,请进行查询,将结果放回缓存中又一个小时. 我的mysql db的大小约为200mb(大约10-20mb/月生长). 我通过编写HTML输出并使用几分钟来进行大量文件缓存,然后再生HTML. 不幸的是,由于它是一个数据库站点,因此可以进行许多分类,搜索和订购方法以及分页.我也不会缓存搜索查询,这会导致大部分负载. 我想实现一个缓存系统,我想知道哪一个更快.很想看到一些基准. 解决方案 a Quick Google Googleler"> Quick Googleling 该APC的速度比Memcached快5倍. 我的经验说,APC的速度几乎比Memcached快7-8倍.但是,可以通过不同的服务访问Memchached(例如,如果您主要在Apache上运行
好吧,我刚从管道开始,我正在尝试使用AUTH,但是请呼叫AUTH ::检查或Auth的任何其他功能.导致以下错误 致命错误:供应商\ Illuminate \ Cache \ memcachedConnector.php在第52行52 上找不到类'memcached'. 我不想使用Memcached以前从未使用过. 我在 .env 文件中将其禁用,并设置 cache_driver 和 session_driver array 仍然显示出相同的错误. 我决定不再次使用AUTH,并用会话/令牌手动处理我的身份,而是使中间件开始结果陷入相同的错误. $app->middleware([ // 'Illuminate\Cookie\Middleware\EncryptCookies', // 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 'Illuminate\Session\Middleware\
在CentOS中使用XAMPP中的PHP配置MEMCAH 时会遇到另一个错误 # /opt/lampp/bin/phpize Configuring for: PHP Api Version: 20131106 Zend Module Api No: 20131226 Zend Extension Api No: 220131226 找不到AutoConf.请检查您的AutoConf安装和 这 $ php_autoconf环境变量.然后,重新运行此脚本. 如何解决它? 解决方案 Mac用户 您可以使用啤酒轻松地进行. brew install autoconf 其他解决方案 我在这里寻找 docker 的答案当使用 Alpine Linux 这对我有用(我尝试了@dimitros解决方案,但无效): RUN apk --no-cache add pcre-dev ${PHPIZE_DEPS} \ &&