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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值