我正在使用共享主机,我无法启用APC。 这里有一个关于这个的线程,唯一的原因是为了安全(php-cgi vs mod_php)。 我询问了主机,他们说这是出于性能方面的原因,特别是I / O会带来这种情况。 我真的不明白 – 共享内存操作码caching肯定会有更less的 I / O? 基本上,如果我build立一个共享的托pipe公司(不是我可以!),我会认为这将使一个caching(如果安全允许),以提高所有客户端的性能的意义。
任何人都可以为我阐明这一点吗? TIA
我想说的APC上的共享主机计划通常不是一个好主意。
您的托pipe答案是正确的,但这不是唯一的原因。
当你得到一个共享主机,你应该知道你并不是唯一一个在你的网站托pipe的服务器上使用的人。 根据托pipe公司的服务器,可能有300(或更多)客户也在该机器上托pipe他们的网站。
通常这些网站有许多PHP文件。 例如,一个joomla 1.6驱动的站点有〜3000个PHP(〜10MB)文件(包括站点和pipe理面板)。 想象一下,所有这些300个客户端都使用Joomla平台和网站
这意味着所有这些客户端都将有〜900000个文件被最终caching – 只有3000MB的RAM将被用于cachingphp文件。 正如您在APC中所了解的,您还可以存储“用户caching条目”,通常可以存储设置或序列化对象。 我不能说多less内存将会去那里,因为它取决于你存储的,但是让我们再说额外的50-100MB。
现在我们已经使用了大约3,1GB的内存。
现在添加基本服务所需的一些内存 – Apache,FTP,PHP,MySQL,PostgreSQL,SendMail和服务器备份工具。 你可能最终会在接近5-6GB内存的地方使用。
当你caching的时候,APC的其他问题就出现了 – 每个人都可以看到你caching的内容(据我所知)。 所以你可能需要encryption你存储的内容 – 这将需要更多的CPU,因为你会一直encryption/解密。 另外,如果有人不小心清除了所有的caching文件/用户条目,服务器将发疯,试图重新caching。
底线是没有系统pipe理员将经历* ss的所有痛苦启用和支持APC。 这对公司也不是好处。 他们宁愿有300多个客户付钱,也不愿意和APC打交道,并想知道他们的服务器是不是会停下来,或者是什么时候不会出问题。
如果客户端获得(pipe理的)专用服务器,更好的解决scheme是。 这样,客户端将是唯一一个托pipe在该服务器上的网站,他可以要求支持安装任何你想在服务器上。 这将是更容易得多,并将节省clietn,系统pipe理员和托pipe公司越来越白发:)
我希望这可以帮助你更好地理解为什么APC不包含在共享主机中。
Per: http : //www.php.net/manual/en/apc.configuration.php#ini.apc.mmap-file-mask
apc.mmap_file_maskstring
如果通过使用–enable-mmap来编译MMAP支持,那么这是mktemp风格的file_mask,传递给mmap模块,以确定您的mmap内存区域是文件备份还是共享内存备份。 对于直接的文件支持的mmap,将其设置为像/tmp/apc.XXXXXX (正好6 X )。 要使用POSIX风格的shm_open / mmap,请在掩码的某处放置一个.shm文件 。 例如/apc.shm.XXXXXX您也可以将其设置为/ dev / zero,以将内核的/ dev / zero接口用于匿名mmap内存。 将其保留为未定义将强制匿名mmap。
如果使用文件支持,这将肯定会增加您的IO取决于进入服务器的stream量。
这会杀死任何共享主机的性能,除非你有足够的内存来保持每个PHP文件加载到内存中。 当一大堆用户试图caching可能不常用的文件时,服务器将开始交换,这会导致该机器上所有内容的性能下降。
根据https://stackoverflow.com/questions/1053810/php-apc-what-happen-when-apc-cache-is-full ,当内存已满并且ttl为0时,caching被刷新。如果没有设置归零,它将使用LRU(最近最less使用)机制。
在我看来,使用APC总是有益的。
@tftd指出了在共享主机中不启用APC,Memcached等的主要原因。 但是如果你的共享服务器不是真正共享的,而是只被你自己的项目使用(或者网页devise/开发客户,如果你不给它们FTP /面板访问),那么可能会出现一个用例,那么这个服务器仍然可以从APC / Memcached的/等。
在任何情况下,我都认为I / O问题取决于可用于APC的RAM,因为如果可用的RAM很低或者站点/ PHP文件的数量是不断变化的非常高(在共享主机的常见情况)。 如果有足够的内存,这应该不会成为问题,并且您正在关注apc.php(APC的信息页面)。
除此之外,在中/高stream量站点,APC的好处是最好的,因为很less访问PHP文件的caching不会有太大影响。