据我所知,你不能用memcached一次存储超过1mb的值或数据。如果是这种情况,有没有办法在将数组提交到 memcached 之前找出数组的文件大小?
Memcache是一个键/值存储,因此不知道"更"复杂"的对象。模块所做的是序列化值并将其存储为字符串。所以,总大小 = strlen(serialize($value));
请注意,你想要的是 strlen
的非重载版本!
这并不能直接回答您的问题,但是如果需要,您可以将 1MB 的限制更改为更大的限制。
请参阅:http://linux.die.net/man/1/memcached
-I 覆盖每个平板页面的默认大小。默认值为 1mb。默认值为 1m,最小值为 1k,最大值为 128m。调整此值 更改项目大小限制。请注意,这也会增加 板数(使用 -v 查看),以及 内存缓存。
您还可以启用压缩以减小值的大小。请参阅:http://ca.php.net/manual/en/memcache.setcompressthreshold.php
或者你尝试一种复杂的方法strlen(serialize($array));
或者你尝试简单的方法
$before = memory_get_usage();
$myarray = array(<content>);
$size = memory_get_usage() - $before;
想不出任何其他方式对不起