我以前从未使用过memcache所以请原谅我的经验不足.虽然它是非常自我解释的,但我想确保我正确使用内置函数,因为我正在创建一个将在商业上使用的类,因此它必须正确编码和高效.

我有几个问题,但由于它们非常基本,我觉得将它们组合成一个Stackoverflow问题是可以的.

如果他们需要一篇论文答案,请不要打扰,我会将其作为一个单独的问题发布

>我什么时候需要使用memcache :: addServer,这和memcache :: connect有什么区别?
>如果内存耗尽,memcache是​​否会覆盖存储的值,即使该项目尚未过期?
>我将如何使用memcache :: getExtendedStats?
>如何检查是否已存在与memcache的连接,如果没有,则创建连接?
>如果我设置了’localhost’的常用memcache服务器,我将如何在同一个专用服务器上设置另一个memcache服务器?
>除了更多的内存,拥有多个memcache服务器有什么好处?
>我应该定期检查memcache服务器更新吗?
>它是否使用大量内存在每个页面的开头运行memcache :: connect,即使我没有使用它?
>我什么时候可能会返回错误,如何捕获这些错误?
>最重要的是,如果我在另一个类中使用memcache,这个类有多个方法,每个脚本可以调用一次以上,那么我应该如何在每个方法中初始化对象并连接到服务器?

我对最后一个问题的猜测是这样做的:

class test {
     public function blah(){
          // Make sure the memcache object is accessible
          global $memcache;

          // Do something ...
          // Save result in memcache
          $memcache->set(...);
     }
     public function foo(){
          // Do something ...
          // No use for memcache
     }
}

// Initialise each class
$test = new test;
$memcache = new memcache;
$memcache->connect(...);

// Call some methods from the test class
$test->blah();
$test->foo();
$test->blah();

正如您在上面的示例中所看到的,我在脚本开头连接到memcache服务器.如果我要在每个页面的开头包含它,即使在不使用memcache的页面上,这会增加响应时间很多还是最小量?因此,问题8!

在阅读本文之前,您可能需要一些咖啡或其他东西:

>当您需要添加更多Memcached服务器时,您需要使用Memcache :: addServer.例如,如果您有一个非常繁忙的网站或Web应用程序……您可能希望运行多个Memcached服务器1.当您想要启动与其中一个Memcached服务器的连接时,将使用Memcache :: connect.另外,根据Memcache :: addServer文档,Memcache :: addServer和Memcache :: connect之间的另一个区别是使用Memcache :: addServer,直到实际需要才建立连接2.
>如果Memcached耗尽RAM,它将丢弃最旧的值3.
> Memcache :: getExtendedStats用于检查有关Memcached服务器的信息.例如,如果您需要了解服务器已运行多长时间(正常运行时间),服务器具有多少连接或一般服务器使用4,这是一个很好的工具.
>检查是否已存在与Memcached的连接的最简单方法是检查$memcache连接变量以查看它是否返回TRUE5.如果你需要一个持久连接(即使你的脚本结束后仍然继续),你可以选择使用Memcache :: pconnect6.
>如果你想让两个Memcached服务器继续运行……而你的第一台服务器已经是你的本地主机,你很可能需要为第二台服务器配备一个单独的,不同的服务器.
>拥有多个Memcached服务器的至少另一个好处是,即使一台服务器发生故障,每当您使数据(或服务器)多样化时,您仍然可以使用其他许多服务器来获取这些服务. Memcached看起来好像它分布在你运行的许多服务器上……所以如果服务器出现故障,你仍然会丢失那部分缓存.但是,您仍然需要启动其他服务器才能继续运行.
>一般来说,保持几乎任何类型的软件都是最新的并不是一个坏主意.看起来Memcached仍然是一个高度活跃的项目9,所以你可能想要尽可能地更新它.但是Memcached的本质似乎并没有在过去的版本中发生很大变化……因此,与操作系统软件相比,更新它可能并不那么重要.
>听起来像Memcached为TCP连接分配内存的方式(当你通过Memcache :: connect调用你的Memcached服务器时)最终会耗费你的内存10.如果您确定在某些页面上不需要该连接,则可能需要避免进行该连接呼叫.
>很难说出代码中可能出现的错误类型.但是,使用像Memcached这样的东西,当你的内存不足时,你可能会发现错误11.
>就像问题8的答案一样,我仍然建议你只在你绝对需要的地方调用$memcache-> connect().您可能在许多应用程序或脚本中使用Memcached;但是仍然可能会有你不需要它的地方.

就问题10的代码构思而言,就实现而言,它真的取决于你.一般来说,尽可能尝试避免全局变量12是好的.相反,就像脚注中的那篇文章(12)所说的那样,单独使用单例类调用进行连接更容易……然后每次想要建立连接时都调用它.

哇,我的眼睛累了.我希望这有帮助,伙计……!

1 http://en.wikipedia.org/wiki/Memcached(见建筑部分)

2 http://www.php.net/manual/en/memcache.addserver.php

3 http://en.wikipedia.org/wiki/Memcached(见建筑部分)

4 http://www.php.net/manual/en/memcache.getextendedstats.php

5 http://www.php.net/manual/en/memcache.connect.php(参见返回值部分)

6 http://www.php.net/manual/en/memcache.pconnect.php

7 http://www.php.net/manual/en/memcache.addserver.php#101194

8 Benefits of multiple memcached instances

9 http://code.google.com/p/memcached/

10 http://www.facebook.com/note.php?note_id=39391378919(来自Facebook的观点)

11 http://groups.google.com/group/memcached/browse_thread/thread/9ce1e2691efb283b

12 How to avoid using PHP global objects?

PHP中的基本Memcache问题的更多相关文章

  1. HTML5 Web缓存和运用程序缓存(cookie,session)

    这篇文章主要介绍了HTML5 Web缓存和运用程序缓存(cookie,session),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. ios – Objective-C中的Google用户serverAuthCode nil

    我正在尝试将GoogleSignIn框架集成到iOS应用程序中,并对服务器上的用户进行身份验证.我设法登录用户,但在–(void)signIn:(GIDSignIn*)signIndidSignInForUser:(GIDGoogleUser*)用户withError:(NSError*)错误委托方法,user.serverAuthCode为nil,我需要通过此服务器身份验证代码,嗯,验证服务器上

  3. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  4. ios – CloudKit – 如何保存记录如果不存在

    我正在尝试创建一个包含唯一值的记录类型,并将作为另一个记录类型的目标引用对象.例如,录制类型–电影将包含用户提交的唯一电影列表.而且FavoriteMovies将包含用户参考和电影参考.用户可以从现有电影列表中进行选择,也可以向其中添加新电影.如果我创建一个新的电影记录,而另一个用户创建一个具有相同名称的新记录(在我检索电影列表之后,但在我尝试添加新电影之前),则会出现问题.这两个新记录被认为是具

  5. swift学习2 元组 tuples

    swift中出现了一种新的数据结构,非常牛掰的元组tuples如果懂PHP的猿,会发现这个元组和PHP的数组非常类似,同样是可以默认不指定key,也可以指定key目前的学习疑问是,如何进行元组的遍历?

  6. 让你真正明白cinder与swift、glance的区别

    Cinder——提供块存储,类似于Amazon的EBS块存储服务,目前仅给虚机挂载使用。Cinder包含以下三个主要组成部分APIservice:Cinder-api是主要服务接口,负责接受和处理外界的API请求,并将请求放入RabbitMQ队列,交由后端执行。Cinder目前提供VolumeAPIV2Schedulerservice:处理任务队列的任务,并根据预定策略选择合适的VolumeService节点来执行任务。目前版本的cinder仅仅提供了一个SimpleScheduler,该调度器选择卷数量

  7. 尝试使用swift mailer,gmail smtp,php发送邮件

    这里是我的代码:在运行时出现此错误…

  8. swift – 如何编码非托管到base64以发送到另一台服务器?

    我正在尝试使用密钥对加密来验证我的应用程序和我的PHP服务器之间的身份.为此,我需要在我的应用程序中生成公钥后将公钥发送到服务器.publicKey的类型为Unmanaged.我在上面的代码中得到的错误是:调用中的额外参数’base64EncodedData’我该怎么办?有没有更好的办法?编辑:这是密钥对的生成方式:编辑2:所以问题是SecKey不是NSData,所以我的问题应该是:如何将publicKey:SecKey转换为NSData?您似乎可以将密钥临时存储到钥匙串,然后将其恢复并将其转换为数据:

  9. 如何在android中设置多个SMTP服务器?

    我的问题是如何设置多个SMTP服务器在Android中发送邮件,如:雅虎,hotmail,gmail,rediff任何类型的域名将在发送邮件时起作用.任何人都可以建议任何网站或任何想法吗?请帮帮我,谢谢你.解决方法以下是GMail,Yahoo!的测试设置.和Hotmail.使用适用于Android的JavaxMail端口进行测试.

  10. 如何在Android服务器上发布大型视频?

    我想发布一个大视频.我正在使用FTP将视频发送到服务器,但上传会在一段时间后停止.在服务器上视频崩溃,但我可以上传较小的视频.我还使用HTTP将视频发送到服务器,作为Base64编码字符串发送,但编码时出现内存不足异常.我试图将视频上传为文件,但没有成功.将大型视频上传到服务器的最佳方法是什么?

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部