V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hdinfo
V2EX  ›  PHP

缓存,是否需要同时安装APC和Memcached?

  •  
  •   hdinfo · 2013-08-31 02:08:04 +08:00 · 6172 次点击
    这是一个创建于 4096 天前的主题,其中的信息可能已经有所发展或是发生改变。
    512内存的云主机,主要跑一个Discuz的论坛

    Discuz支持APC,所以是否需要同时安装APC和Memcached?

    听说APC只是php加速,Memcached是数据库查询缓存加速,所以应该需要同时安装吧??

    具体不是很懂,所以问问大家
    16 条回复    1970-01-01 08:00:00 +08:00
    laogui
        1
    laogui  
       2013-08-31 09:20:02 +08:00   ❤️ 1
    一直同时用,没什么问题。
    freefcw
        2
    freefcw  
       2013-08-31 09:22:06 +08:00   ❤️ 1
    必须要啊。。。你自己都知道apc和memcached作用不一样了,虽然apc自带一些缓存功能,但是和memcached不是一个作用
    Loveyuki
        3
    Loveyuki  
       2013-08-31 10:13:33 +08:00   ❤️ 1
    APC 自带了 key-value 缓存, 速度也比 memcached 快,但是因为他基于共享内存的,只能本机的 PHP 进程使用。分布式做不到。

    memcached 的访问是基于tcp/udp网络协议的,通讯协议确定以后,可以在不同机器和不同语言之间共享。分布式很容易做到。
    wzxjohn
        4
    wzxjohn  
       2013-08-31 10:17:02 +08:00
    512M内存就别玩memcache了吧。。。
    julyclyde
        5
    julyclyde  
       2013-08-31 21:20:36 +08:00
    建议你先搞明白这俩是做什么的。memcached并不是装了就能起作用的,而是应用程序主动去用它才行
    kennedy32
        6
    kennedy32  
       2013-08-31 21:25:27 +08:00
    跟随官方脚步,转到zendopcache中。。。。
    raincious
        7
    raincious  
       2013-08-31 22:03:08 +08:00   ❤️ 1
    楼主,建议测试下discuz看能不能跑在php 5.5上,如果能就装php 5.5,然后上opcache,然后再上个memcached,这样就全了。速度能快很多倍。

    我最近的一个项目跑在php 5.5上比跑在我自己php 5.4的开发环境上竟然快10倍还多一点(大部分5ms内产生页面)。当然,我的框架是针对php 5.5优化了下的倒是。

    不过看测评,光是php 5.4 + apc VS php 5.5 + opcache这速度就不只差一点半点了。

    另外。。。如果楼主内存小但是胆子大的话+没有特别大量的数据需要缓存+不需要分布式缓存的话,可以试试看直接用文件缓存,然后让网站运行在/dev/shm上,同时加上php 5.5 + opcache。不知道这样速度是不是能更快。
    thbourlove
        8
    thbourlove  
       2013-09-01 00:23:35 +08:00
    @raincious `我的框架是针对php 5.5优化了下的`求介绍针对php 5.5都可以做什么特别的优化?
    gaody
        9
    gaody  
       2013-09-01 00:32:12 +08:00
    @raincious 求教
    hdinfo
        10
    hdinfo  
    OP
       2013-09-01 02:15:18 +08:00
    php 目前用的是5.3,因为一些脚本是5.3写的,所以暂时没有升级的打算。

    目前APC+Memcached+gzip,discuz速度还可以,大部分页面5毫秒内也能打开,所以暂时不想折腾了。谢谢大家。
    nine
        11
    nine  
       2013-09-01 10:57:00 +08:00
    @raincious 同求,顺便求评测地址。。
    raincious
        12
    raincious  
       2013-09-01 11:15:51 +08:00   ❤️ 1
    @thbourlove @gaody opcache可以自动缓存php编译后的opcode。这样的话,如果php文件本身没有被修改过,那么这个文件在之后就不需要重新解析。而是直接用之前的opcode运行就好了。

    所以,我将数据什么的用var_export导出成数组字符串,然后存成php文件缓存,下次直接include使用这个文件就行了。

    我自己的实验结果是比memcached快。所以如果未来不考虑分布式和同步的话,也可以考虑用文件缓存。只要不经常写就行了。

    然后在我的框架里添加了支持,可以将:核心的实例、所创建的所有对象的实例、模板、缓存存储为php文件,然后速度自然就飞快了。(其实没什么技术含量的)

    框架源是开源的,献丑下:https://github.com/raincious/facula
    raincious
        13
    raincious  
       2013-09-01 11:47:40 +08:00
    suckli
        14
    suckli  
       2013-09-01 16:57:48 +08:00   ❤️ 1
    APC适合不频繁更改的数据,如果频繁修改缓存的数据,APC会出现严重的内存碎片,最终缓存会被耗尽。我就被坑过一次,所以还得具体看业务。
    qq286735628
        15
    qq286735628  
       2013-09-01 17:09:47 +08:00
    freefcw
        16
    freefcw  
       2013-09-01 18:50:00 +08:00
    @Loveyuki

    @suckli 说的是,APC还是尽量不要用来做缓存了,专门用来他的OPCODE即可,个人比较喜欢放一些配置在APC里面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:28 · PVG 08:28 · LAX 16:28 · JFK 19:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.