我有一个不可修改的功能,需要几秒钟才能完成。 该函数返回一个对象数组。结果每天只改变一次。
为了加快速度,我想使用APC缓存结果,但托管服务提供商(共享托管环境)不提供任何内存缓存解决方案(APC,memcache,...)。
我找到的唯一解决方案是使用serialize()将数据存储到文件中,然后再将数据反序列化。
如何从数组中生成php源代码?后来我可以简单地打电话
require data.php
将数据导入预定义变量。
谢谢!
更新:存储生成的.html是没有选项,因为输出是用户相关的。
答案 0 :(得分:6)
你的意思是这样吗?
// File: data.php
<?php
return array(
32,
42
);
// Another file
$result = include 'data.php';
var_dump($result);
这已经成为可能了。要更新文件,您可以使用类似
的内容file_put_contents('data.php', '<?php return ' . var_export($array, true) . ';');
更新: 但是,serialize()/ unserialize()和将序列化数组存储到文件中也没有错。
答案 1 :(得分:2)
为什么不缓存生成的生成的html页面?你可以这么简单地做到这一点:
// Check to see if cached file exists
// You could run a crob job to delete this at a certain time
// or have the cache file expire after a set amount of time
if(file_exists('cache.html')) {
include('cache.html');
exit;
}
ob_start(); // start capturing output buffer
// do output
$output = ob_get_contents();
$handle = fopen('cache.html', 'w');
fwrite($handle, $output);
fclose($handle);
ob_end_flush();
答案 2 :(得分:0)
您可以将答案写入数据库,并使用函数参数作为键。