我试图在我们的环境中理解(并可能部署)memcached.
我们在loadbalancer上有4个web服务器,运行用PHP开发的大型Web应用程序.我们已经在使用APC了.我想看看memcached是如何工作的?至少,可能是我不明白缓存是如何工作的.
我们有一些复杂的动态查询,它们组合了几个表来提取数据.每次,数据都来自不同的客户端数据库,数据不断变化.根据我的理解,如果某些数据存储在缓存中,并且下次请求相同,则返回相同的数据.(或者我在这里可能完全错了).
整个memcache(或者就此而言,任何缓存的东西都有效)如何?
在工作中,我们最近开始为我设计一个"大规模"的应用程序(我们正在设计为每天提供数百万次点击的潜力).其中一个高级开发人员和系统管理员已在服务器上设置了memcache.
据我了解,Memcache将在内存中保存查询结果和某些表格的X时间,并保持一切hunky dory.
memcache的一个缺点似乎是我无法为我的生活设法在我的本地开发环境中设置它.我已经遵循了一些关于如何为自己编译它的不同指导.大多数,如果不是所有步骤似乎都正常工作但在PHPLoad上出现此错误:
[11-Sep-2010 16:02:30] PHP Warning: PHP Startup: Unable to load dynamic library '/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so' - dlopen(/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so, 9): image not found in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
不是主要的问题,但是,如果你已经能够在Snow Leopard上为MAMP 1.9编译Memcache,请告诉我这个技巧.
我的主要问题是各种Web缓存技术之间的差异.我已经看到提到Memcache,APC和Xcache(这里:手动将mysql查询的结果缓存到txt文件)但不知道每个之间的优缺点和差异.
在我看来,Memcache的优势在于该项目的主要开发者和我们的系统管理员选择的那个.它的缺点是在Mac上尝试设置和编译是完全没法的.- ^)
任何能够列举其他(甚至是其中一种)其他cachine技术的利弊的人都希望听到的任何人.它们最适合使用的地方,如何最好地使用它们.等等.
这是我认为的所有有用信息.
非常感谢您花时间扩展我的知识. - 亚历克斯
我目前正在运行几个PHP/FastCGI副本,启用了APC(在Apache + mod_fastcgi下,如果这很重要).我可以在进程之间共享缓存吗?我如何检查它是否已经共享?(我认为apc.mmap_file_mask可能涉及ini设置,但我不知道如何使用它.)
(我认为目前不共享的原因之一是,apc.mmap_file_mask当我重新加载时,apc.php web界面报告的大约3个不同的值之间会翻转.)
由于我使用PECL安装了APC for PHP,我有时会遇到以下错误: Cannot redeclare class xxx
xxx不时变化.我可以禁用APC,但APC可以提高性能!是否存在已知错误或我可以采取其他措施来防止这些错误?我正在使用Ubuntu 8.04 LTS和PHP 5.2.4.
编辑/更新(来自评论):
我使用Zend Framework Autoloader,在启用APC之前从未发生过这些错误.不久前我得到了这个错误:Fatal error: require(): Cannot redeclare class zend_db_adapter_abstract in /paths/app/lib/Zend/Db/Select.php on line 27
我已将MacBook升级为Mavericks并破坏了我的开发环境.我现在遇到的问题是我的pear/pecl仍然尝试安装我之前的(5.3)版本的PHP而不是5.4版本.
PHP版本:
$ php -v
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)
梨
$ pear version
PEAR Version: 1.9.4
PHP Version: 5.4.17
Zend Engine Version: 2.4.0
Running on: Darwin MBP-retina.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64
Run Code Online (Sandbox Code Playgroud)
如果我安装apc
$ sudo pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 …Run Code Online (Sandbox Code Playgroud) 在CLI模式下运行时,PHP中的APC模块是否支持代码优化?例如,当我运行文件php -f <file>时,文件是否会在执行之前用APC进行优化?假定APC设置为在配置文件中加载.此外,包含的脚本require_once是否也会进行优化?
我知道在fastcgi模式下运行时优化工作正常,但我想知道它是否也适用于CLI.
apc_*函数工作,但我想知道代码优化,这是我在这里的主要事情.
快乐的一天,马蒂奇
我试图找到一个明确的答案,自动加载在使用APC时杀死性能的问题及其原因(基准测试?)
PS 使用谷歌/ stackoverflow 发现此链接,但我想知道这是否仍然存在?必须改进PHP来处理这个问题?因为自动加载很酷!
我知道如果密钥已经存在,apc_store()会覆盖密钥,所以我知道差异,我的问题是:什么是更好的方法/最佳实践?
我得到了提示Enable internal debugging in APC [no]:.安装APC时.
- 什么是APC内部调试?
- 是否更好地保持启用?
试图做一个搜索,但找不到答案!
我是一个绝对的新手......直到一小时前才学习SSh并且在2小时前得到了我的第一个VPS.还在学习!
所以我正在安装MediaWiki,需要添加APC扩展.但是遇到了麻烦.有什么想法/提示吗?
[root@www ~]# pecl install apc`
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
shtool at '/var/tmp/APC/build/shtool' does not exist or is not executable.
Make sure that the file exists and is executable and then rerun this script.`
Run Code Online (Sandbox Code Playgroud)