PHP 缓存 内存,php - 一个大型数组变量的APC内存缓存(22MB)
我有一个很大的2D数组,我序列化后存储在一个文件中。序列化的文件大约9.5MB,从磁盘读取约需0.05秒。要访问该数组,反序列化过程大约需要1.3秒,这太长了。
我想要做的是首先反序列化数组,然后将该数组存储为APC缓存变量。当我使用apc_store或apc_add时,我遇到了服务器超时/未找到错误的问题。如果我注释掉apc_store代码,那么它会很好,但是数组不会被缓存。缓存较小的测试文件/数组大约1MB没有问题。从我下面的php代码中,我发现问题阵列的内存大小约为22MB。
这些是我在php.ini中的apc设置
apc.shm_segments = 1
apc.shm_size = 512M
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 1024
apc.enable_cli = 1
apc.max_file_size = 512M
apc.stat=1我正在使用xampp在本地机器上测试我的代码。任何人都可以提出如何解决/解决服务器超时问题?
这只是我的缓存测试例程:
$startunser = microtime(true);
if ($quote = apc_fetch('serialfile')) {
echo "
serfile [cached] ";
}
else {
$start_memory = memory_get_usage();
$sF = "seri.txt";
$sxx = file_get_contents($sF);
$pro = unserialize($sxx);
apc_store('serfile', $pro, 10);
echo "
serfile is NOT cached ";
echo memory_get_usage() - $start_memory;
}
$elapsedunser = microtime(true) - $startunser;
echo "
The unserialize process took $elapsedunser seconds";
return;对于任何人的好奇心,我还记得(使用apc_fetch)一个来自APC的数组,其序列化大约为1MB的序列化文件时,获取过程实际上比从磁盘读取文件和反序列化文件更长.5对比4秒)。一开始我也不相信。
TIA
PHP 缓存 内存,php - 一个大型数组变量的APC内存缓存(22MB)相关推荐
- 什么变量在堆内存里存放,什么变量在栈内存里存放
堆和栈的区别 (stack and heap) 一般认为在c中分为这几个存储区 1栈 - 有编译器自动分配释放 2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3全局区(静态 ...
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
内存分配方式有三种: 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. 在栈上创建. 在执行函数时,函数内局部变量的存储单元都 ...
- java 一个线程占多少内存_一个jvm线程占用多少操作系统内存
找到关键点 在看到12452个等待在CachedBnsClient.run的业务的一瞬间笔者就意识到,肯定是这边的线程导致对外内存泄露了.下面就是根据线程大小计算其泄露内存量是不是确实能够引起OOM了 ...
- java 数组 内存_图解Java数组的内存分配
1. Java数组是静态的 Java是静态语言,所以Java的数组也是静态的,即:数组被初始化后,长度不可变 静态初始化:显式指定每个数组元素的初始值,系统决定数组长度 String[] books ...
- 连续地址数据(数组或者malloc的内存)作为函数参数
在编程时,一簇连续的内存单元,比如数组或者malloc的内存块,如下的数组a 或者指针p. int a[4]; int *p = malloc(4 * sizeof(int)); 我们要想修改上述连续 ...
- java 内存分布_java的各类型数据在内存中分配情况详解_
1. 有这样一种说法,如今争锋于IT战场的两大势力,MS一族偏重于底层实现,Java一族偏重于系统架构.说法根据无从考证,但从两大势力各自的社区力量和图书市场已有佳作不难看出,此说法不虚,但掌握Jav ...
- 将栈S中的元素逆置,使用额外的一个栈L和非数组变量
/*将栈S中的元素逆置,使用额外的一个栈L和非数组变量*/ #include<stdio.h> #include<stdlib.h> #include<time.h> ...
- 搭建一个大型网站架构的实验环境(Squid缓存服务器篇)
Squid是一个高性能的代理缓冲服务器,也许你已经用过Windows平台下的WinGate,MS Proxy Server等功能类似的产品.Squid是一个应用级代理,在保证客户端主机和服务器主机网络 ...
- java中数组的内存模型_Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型+虚拟机原理能解决什么样问题...
在上一篇文章中,小编为您详细介绍了关于<变频器调速问题?三星R458更换CPU>相关知识.本篇中小编将再为您讲解标题Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型 ...
最新文章
- LDAP(轻量目录存取协议)
- android 默认打开服务器地址,Android开发实现任意切换服务器地址
- Koa -- 基于 Node.js 平台的下一代 web 开发框架
- 王道408数据结构——第六章 图
- ASP.NET 数据库缓存依赖
- 在两个页面之间传递信息
- 二级VB培训笔记10:知识点串讲
- 【Linux】Linux的关机和虚拟机克隆、快照
- 堆排序建堆复杂度在特殊情况下的推导
- latex 插入表格_【2020.11.30】IEEE trans英文latex写作心得和学习历程
- linux上容器端口映射,MacOS下的docker端口映射
- Chrome浏览器showModalDialog兼容性及解决方案
- android 不生成odex文件方法
- sqlserver200864位下载_Microsoft SQL Server 2008 R2 官方简体中文正式版下载
- 开机黑屏显示html,开机黑屏显示“This Product is covered by”解决方法
- magisk安装失败_联想Z6 Pro安卓10刷Magisk、太极
- Android开发者账号申请注册及上传
- 常见的互联网名词 O2O、B2B、C2C等
- RelativeLayout控件之填满
- Git--SSH登录
热门文章
- 【ML】理解偏差和方差,过拟合和欠拟合
- 5.5 用户定义的可调用类型
- 钩子教程 - 原理(一)
- [CLR via C#]1.6 Framework类库~1.9与非托管代码的互操作性
- 航空8联货运单的作用详解
- Win 10 +Ubuntu双系统
- Python办公自动化(四) | 批量处理文件
- WebSphere 管理员界面 修改配置之后,没有反应的原因,需要按下[保存]link
- 在浏览的地址栏中,直接调用js「javascript:alert(hello wrold);」。
- 力扣题目——102. 二叉树的层序遍历