【问题标题】:how to use Memcache to speed up the PHP?如何使用 Memcache 加速 PHP?
【发布时间】:2009-09-20 02:07:58
【问题描述】:

我已经为我的 PHP Apache 本地服务器服务器 (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 $

谢谢

【问题讨论】:

    标签: php optimization


    【解决方案1】:

    可能想考虑改用memcache_pconnect(),但这有利有弊。

    您已经设置了内存缓存。除非您将其用于某些事情,否则它不会加速任何事情。您可以缓存四种基本内容:

    1. 从文件加载内容;
    2. 从数据库加载内容;
    3. 从远程主机加载内容;和
    4. 存储需要大量时间计算的结果。

    除非您将它用于某事,否则它不会做任何事情。

    【讨论】:

      【解决方案2】:

      您需要对代码及其使用的算法进行一些基本分析。 Memcache 就像在食谱中添加盐一样:您需要将其添加到正确的部分,否则您不会得到好处,反而会妨碍您。

      在 PHP 中,有几种类型的缓存可以提高网页的性能,而 memcache 只是其中之一。如果您有很多相同的查询,您可以在数据库中打开查询缓存。如果您有很多页面连接而查询流量很小,那么您将受益于连接池(这会缓存 TCP 连接)和数据库中的线程缓存(这会在数据库上缓存 CPU 资源)。

      如果您要抛出大量数据,尤其是字符串和大数组或对象,您可以开始考虑引用并更新不涉及不必要重新复制的字符串处理(例如,在循环中连接字符串很昂贵 -将它们添加到数组中并在最后内爆一次)。这可以大大提高性能和内存。

      如果您有很多查询在一个页面中一遍又一遍地获取相同的信息,您需要改进您的数据存储层。这将允许您进行一次查询以获取一行,然后在整个页面中重新使用数据,而不是再次获取它。 (这通常是从任意 SQL 的大杂烩转到对象持久层的最佳理由。)请注意,这可能涉及应用程序的大量重新架构。您可以将对象数据的缓存添加到您的对象层 - 这将有利于 所有使用这种对象的事物,这可能是一个巨大的胜利。这对 memcache 来说是个好点,应用程序代码甚至不必知道。请注意数据生命周期以及是否或如何提前更新。

      如果您有很多页面都在进行同样的查询,但查询成本有点高(即使是通过数据访问层的代理),那么您可以将其缓存几秒钟。它不一定是 memcache,但这是一个不错的选择。

      最后,如果你有很多文件永远不会改变,你可以使用一个单独的服务器,只提供静态文件。这为您的执行环境提供了更多执行代码的空间,并且您可以调整静态文件服务器以擅长快速返回文件。这对于网站性能的感知来说可能是一个巨大的胜利。

      IMO,缓存应该改进而不是启用您的应用程序。

      【讨论】:

        猜你喜欢
        • 2011-04-18
        • 2011-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-04
        • 2014-03-18
        • 2012-01-19
        相关资源
        最近更新 更多