开发者

Generate php source code based on php array

开发者 https://www.devze.com 2023-02-20 15:04 出处:网络
I\'ve got a non-modifiable function which takes several seconds to finish. The function returns an array of objects. The result only changes about once per day.

I've got a non-modifiable function which takes several seconds to finish. The function returns an array of objects. The result only changes about once per day.

To speed things up I wanted to cache the result using APC but the hosting provider(shared hosting environment) does not offer any memory caching solutions (APC, memcache, ...).

The only solution I found was using serialize() to stor开发者_高级运维e the data into a file and then deserializing the data back again.

What about generating php source code out of the array? Later I could simple call

require data.php

to get the data into a predefined variable.

Thanks!

UPDATE: Storing the resulting .html is no option because the output is user-dependant.


Do you mean something like this?

// File: data.php
<?php
return array(
  32,
  42
);


// Another file
$result = include 'data.php';
var_dump($result);

This is already possible. To update your file, you can use something like this

file_put_contents('data.php', '<?php return ' . var_export($array, true) . ';');

Update: However, there is also nothing wrong with serialize()/unserialize() and storing the serialized array into a file.


Why not just cache the resulting html page that is generated? You could do that fairly simply:

// 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();


You could just write the answers to a database, and use the function arguments as key.

0

精彩评论

暂无评论...
验证码 换一张
取 消