PHP - memcache和require哪个更快?

3

我正在尝试加载预定义的电子邮件消息以发送 - 我的问题是,我应该将所有电子邮件消息都存储在memcache中,而不仅仅是包含电子邮件消息变量的文件,并且只调用一次,比如每天一次吗?

2个回答

5

如果你需要在不同的进程/请求中进行大量读取,那么Memcache非常方便。如果你是在批处理中进行大量读取,那么就不要使用Memcache。

本地包含(local include)非常快,如果你经常访问该文件,操作系统甚至会为你缓存该文件,从而有效地从内存中读取它。没有测试无法确定,但我认为最大的速度提升应该是将文件放入opcode缓存(例如APC):原生格式和内存中。

然而,如果你正在发送邮件,我会感到惊讶如果文件包含是你代码的瓶颈,特别是如果你很清楚优化规则#1:不要解决不存在的性能问题。


从来没有听说过优化规则#1-谢谢!我正在开发一个新系统,所以我只是想为未来做好准备,但知道这一点很好! - 它们是单独的请求。每次有人在我们的网站上注册或我们必须发送电子邮件。 - Kerry Jones
该死,我本来就要说几乎完全相同的话,特别是最后一句。给你点赞。 - Kris
我一直认为优化的第一条规则是,最大的收益来自于从不工作的系统到工作的系统的转变(也就是说:过早优化是万恶之源)...;-) - ircmaxell
非常好的说法:“不要解决不存在的性能问题”,是的,这应该是优化规则#1。 - Sandeepan Nath

2

这是一个非常难回答的问题,因为涉及到很多变量。

如果数据请求很多(我指每秒钟多于1或2个请求),那么Memcache会更适合...

您的驱动器性能高吗(SCSI或SAS,RAID 0或10)? 如果是这样,文件可能更适合。

您的RAM很多吗? 如果是这样,操作系统可以缓存更多的文件数据,因此对于文件将需要更少的驱动器活动。

您有很多这些预定义的邮件吗? 如果是这样,Memcache的索引可能会有所不同...

您的Memcache服务器是否仅在本地主机上? 如果不是,由于网络延迟,Memcache将失去一点。

底线是:除非您要进行大量查询(每秒钟多次查询),否则两种方法都一样快(在10到20毫秒内)。 就个人而言,除非您每秒钟执行超过约10个电子邮件查询,请坚持使用文件方法。 它更容易维护(如果需要重新启动Memcache,则无需担心刷新Memcache),并且更易于调试。 记住:保持简单...


谢谢您的回复 - 我不是服务器管理员,也不设置服务器,所以我对驱动器一无所知。RAM 明显很低(我相信只有 2-4 GB),而且它是本地主机。目前我打算将其保留在本地,如果出现问题,那么我会更深入地研究它,但我有预感其他事情会更早地引起问题。 - Kerry Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接