我有一个很大的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)相关推荐

  1. 什么变量在堆内存里存放,什么变量在栈内存里存放

    堆和栈的区别 (stack and heap) 一般认为在c中分为这几个存储区 1栈 - 有编译器自动分配释放 2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3全局区(静态 ...

  2. 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”

    内存分配方式有三种: 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. 在栈上创建. 在执行函数时,函数内局部变量的存储单元都 ...

  3. java 一个线程占多少内存_一个jvm线程占用多少操作系统内存

    找到关键点 在看到12452个等待在CachedBnsClient.run的业务的一瞬间笔者就意识到,肯定是这边的线程导致对外内存泄露了.下面就是根据线程大小计算其泄露内存量是不是确实能够引起OOM了 ...

  4. java 数组 内存_图解Java数组的内存分配

    1. Java数组是静态的 Java是静态语言,所以Java的数组也是静态的,即:数组被初始化后,长度不可变 静态初始化:显式指定每个数组元素的初始值,系统决定数组长度 String[] books ...

  5. 连续地址数据(数组或者malloc的内存)作为函数参数

    在编程时,一簇连续的内存单元,比如数组或者malloc的内存块,如下的数组a 或者指针p. int a[4]; int *p = malloc(4 * sizeof(int)); 我们要想修改上述连续 ...

  6. java 内存分布_java的各类型数据在内存中分配情况详解_

    1. 有这样一种说法,如今争锋于IT战场的两大势力,MS一族偏重于底层实现,Java一族偏重于系统架构.说法根据无从考证,但从两大势力各自的社区力量和图书市场已有佳作不难看出,此说法不虚,但掌握Jav ...

  7. 将栈S中的元素逆置,使用额外的一个栈L和非数组变量

    /*将栈S中的元素逆置,使用额外的一个栈L和非数组变量*/ #include<stdio.h> #include<stdlib.h> #include<time.h> ...

  8. 搭建一个大型网站架构的实验环境(Squid缓存服务器篇)

    Squid是一个高性能的代理缓冲服务器,也许你已经用过Windows平台下的WinGate,MS Proxy Server等功能类似的产品.Squid是一个应用级代理,在保证客户端主机和服务器主机网络 ...

  9. java中数组的内存模型_Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型+虚拟机原理能解决什么样问题...

    在上一篇文章中,小编为您详细介绍了关于<变频器调速问题?三星R458更换CPU>相关知识.本篇中小编将再为您讲解标题Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型 ...

最新文章

  1. LDAP(轻量目录存取协议)
  2. android 默认打开服务器地址,Android开发实现任意切换服务器地址
  3. Koa -- 基于 Node.js 平台的下一代 web 开发框架
  4. 王道408数据结构——第六章 图
  5. ASP.NET 数据库缓存依赖
  6. 在两个页面之间传递信息
  7. 二级VB培训笔记10:知识点串讲
  8. 【Linux】Linux的关机和虚拟机克隆、快照
  9. 堆排序建堆复杂度在特殊情况下的推导
  10. latex 插入表格_【2020.11.30】IEEE trans英文latex写作心得和学习历程
  11. linux上容器端口映射,MacOS下的docker端口映射
  12. Chrome浏览器showModalDialog兼容性及解决方案
  13. android 不生成odex文件方法
  14. sqlserver200864位下载_Microsoft SQL Server 2008 R2 官方简体中文正式版下载
  15. 开机黑屏显示html,开机黑屏显示“This Product is covered by”解决方法
  16. magisk安装失败_联想Z6 Pro安卓10刷Magisk、太极
  17. Android开发者账号申请注册及上传
  18. 常见的互联网名词 O2O、B2B、C2C等
  19. RelativeLayout控件之填满
  20. Git--SSH登录

热门文章

  1. 【ML】理解偏差和方差,过拟合和欠拟合
  2. 5.5 用户定义的可调用类型
  3. 钩子教程 - 原理(一)
  4. [CLR via C#]1.6 Framework类库~1.9与非托管代码的互操作性
  5. 航空8联货运单的作用详解
  6. Win 10 +Ubuntu双系统
  7. Python办公自动化(四) | 批量处理文件
  8. WebSphere 管理员界面 修改配置之后,没有反应的原因,需要按下[保存]link
  9. 在浏览的地址栏中,直接调用js「javascript:alert(hello wrold);」。
  10. 力扣题目——102. 二叉树的层序遍历