生成基于php数组的php源代码

时间:2011-03-30 14:06:30

标签: php performance code-generation shared-hosting

我有一个不可修改的功能,需要几秒钟才能完成。 该函数返回一个对象数组。结果每天只改变一次。

为了加快速度,我想使用APC缓存结果,但托管服务提供商(共享托管环境)不提供任何内存缓存解决方案(APC,memcache,...)。

我找到的唯一解决方案是使用serialize()将数据存储到文件中,然后再将数据反序列化。

如何从数组中生成php源代码?后来我可以简单地打电话

require data.php

将数据导入预定义变量。

谢谢!

更新:存储生成的.html是没有选项,因为输出是用户相关的。

3 个答案:

答案 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)

您可以将答案写入数据库,并使用函数参数作为键。