PHP APC:如何缓存高达128M的数据?
我有大数据部分要在APC中缓存(普通文件缓存太慢).对于这个数据量,apc_store函数总是返回false:
我试着这样做: ini_set('apc.max_file_size','128M'); die(ini_get('apc.max_file_size')); 输出是1M!它不会抛出任何错误,但它根本不起作用.我拥有的所有其他ini_sets(例如memory_limit)运行良好,因此它不是权限问题. 我的APC信息是: Version 3.1.3p1 MMAP Support Enabled MMAP File Mask no value Locking type pthread mutex Locks Revision $Revision: 286798 $ Build Date Apr 18 2010 06:56:17 和设置是: apc.cache_by_default On apc.canonicalize On apc.coredump_unmap Off apc.enable_cli Off apc.enabled On apc.file_md5 Off apc.file_update_protection 2 apc.filters no value apc.gc_ttl 3600 apc.include_once_override Off apc.lazy_classes Off apc.lazy_functions Off apc.max_file_size 1M apc.mmap_file_mask no value apc.num_files_hint 1000 apc.preload_path no value apc.report_autofilter Off apc.rfc1867 Off apc.rfc1867_freq 0 apc.rfc1867_name APC_UPLOAD_PROGRESS apc.rfc1867_prefix upload_ apc.rfc1867_ttl 3600 apc.shm_segments 1 apc.shm_size 128 apc.stat On apc.stat_ctime Off apc.ttl 0 apc.use_request_time On apc.user_entries_hint 4096 apc.user_ttl 0 apc.write_lock On 我应该设置什么来缓存这样的大数据药水? 解决方法
在@Ugo Meda的评论之后,我想与您分享我对此问题的解决方案.正如他正确指出的那样,我无法通过ini_set设置APC设置(即apc.max_file_size).它只是返回false而其他设置(即memory_limit)运行良好!
所以我唯一能做的就是直接在apc.ini中设置它.该文件在Ubuntu上的位置是: /etc/php5/conf.d/apc.ini 有时你的APC设置在[APC]部分的php.ini中 – 这个文件在Ubuntu上的位置是: /etc/php5/apache2/php.ini 如果找不到,只需运行以下命令: find / -name apc.ini 如果没有这样的文件(apc.ini)尝试在那里寻找php.ini和[APC]部分: find / -name php.ini 找到正确的配置文件后,您就可以编辑它的选项了.我只是在那里添加了这两行: apc.shm_size=512 apc.max_file_size=128M 编辑后,保存它,然后只需重新启动Apache(Ubuntu – /etc/init.d/apache2 restart).如果由于某种原因您无法运行此命令,或者您没有提及* .ini文件的权限,则在上面的每个命令的开头添加sudo命令. 关于apc.shm_size的另一个注意事项: 如果您的APC版本低于3.1.4,则此配置选项的值必须以我写的格式(末尾没有’M’)写入.如果您的版本是3.1.4或更高版本,则需要以这种方式指定它:512M. 资料来源:http://e-mats.org/2010/10/apc_mmap-mmap-failed-cannot-allocate-memory/ @Ugo Meda’s – 再次感谢我指出这一点! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |