This may work, although I just made it up. I can see already that you'd have some problems with multiple scripts running at once. If a script opens the cache, then a second script saves new cache information before the first script saves it's data, the first script would overwrite the second script's update.

Maybe instead of a read at the beginning of script execution, a read at the beginning of each query would be better?

Save cache results to a file:

// script start
$querycache = unserialize(file_get_contents("query.cache"));

$querycache format:

array('sql' => array(), 'result'=>array(), 'time'=>array());

For each sql statement 'sql' you have a result array.
// run all your queries through a function:
function query($sql) {
   $cached = array_search($sql, $querycache['sql'])
   // check to see if the result is old
   if (time() - $querycache['time'][$cached] > $max_time) {
         $cached = false;
   if ($cached) {
         return $querycache['result'][$cached];
   } else {
         $result = mysql_query($sql);
         $querycache['sql'][] = $sql;
         $index = array_search($querycache['sql']);
         $querycache['time'][$index] = time();
         while ($r = assoc($result)) {
                $querycache['result'][$index][] = $r;
         // save cache for other scripts
         file_put_contents('query.cache', serialize($querycache));
         return $querycache['result'][$index];

... It's actually kind of a complicated process now that I'm thinking about it.


On 03/13/2007 06:20 AM, Vincent wrote:
Hi all,

I'm trying to improve the performance for visitors, and I want to know
if there is some way to store the mySQL results of  .php scripts in

So, in example, when requesting , it can be redirected to
his cached version

Any code or information would be appreciated,


PHP Database Mailing List (
To unsubscribe, visit:

Reply via email to