我为PHP Apache localserver服务器(XAMPP)启用了memcache扩展
但我不知道如何使用它来加速我的PHP脚本 将以下代码写在每个页面的顶部我想加快是否足够?或者我应该做点什么?
/* procedural API */
$memcache_obj = memcache_connect('127.0.0.1', 11211);
/* OO API */
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
phpinfo()显示以下详细信息
memcache support enabled
Active persistent connections 0
Version 2.2.4-dev
Revision $Revision: 1.99 $
由于
答案 0 :(得分:6)
您 可能 想要考虑使用memcache_pconnect()
,但这样做有利有弊。
你已经设置了memcache。它不会加速任何东西,除非你用它来做某事。您可以缓存四个基本内容:
在你用它之前,它什么都不做。
答案 1 :(得分:2)
您需要对代码及其使用的算法进行一些基本概要分析。 Memcache就像在食谱中添加盐:你需要将它添加到正确的部分,否则你就无法获得好处而反而妨碍了它。
在PHP中,有几种类型的缓存可以提高网页的性能,而memcache只是其中之一。如果您有许多相同的查询,则可以在数据库中启用查询缓存。如果您有许多页面连接很少的查询流量,您将受益于连接池(这缓存TCP连接)和DB中的线程缓存(这会缓存数据库上的CPU资源)。
如果要丢弃大量数据,特别是字符串和大数组或对象,您可以开始考虑引用并更新不涉及不必要的重新复制的字符串处理(例如,在循环中连接字符串很昂贵 - 将它们添加到一个数组中并在最后将其内爆一次)。这可以是一个很大的性能和内存改进。
如果您有大量查询在一个页面中反复获取相同的信息,则需要改进数据存储层。这将允许您进行一次查询以获取一行,然后在整个页面中重复使用数据,而不是再次获取它。 (这通常是从任意SQL的hotch-potch到对象持久层的最佳理由。)请注意,这可能涉及应用程序的重新设计者。您可以将对象数据的缓存添加到对象层 - 这将有利于使用该类对象的所有,这可能是一个巨大的胜利。这是memcache的一个好点,应用程序代码甚至不必知道。请注意数据生命周期以及是否或如何及早更新。
如果你有很多页面做同样昂贵的查询(即使是通过数据访问层的代理),那么你可以缓存几秒钟。它不一定是memcache,但这是一个不错的选择。
最后,如果您有许多永不改变的文件,您可以使用仅服务静态文件的单独服务器。这为您的执行环境提供了更多执行代码的空间,您可以调整静态文件服务器以便快速返回文件。对于网站性能的认知,这可能是一个巨大的胜利。
IMO,缓存应该改进而不是启用你的应用程序。