5

I am looking for a script to generate static HTML pages from dynamic content at runtime.

What I basically want to do is to save those cache those html generated pages for offline browsing.

Could anyone please point me in the right direction?

Thanks

Satch3000
  • 47,356
  • 86
  • 216
  • 346
  • 1
    Any caching class does that. You just need to adapt them to use readable output filenames. (Or whatever you want but didn't mention in your question.) – mario Apr 17 '11 at 21:00

2 Answers2

4

If you want to do this manually, you can use output buffering. For example:

File static.php:

Hello, <a href="profile.php"><?php echo htmlspecialchars($username); ?></a>!

File functions.php:

/**
 * Renders cached page.
 *
 * @param string $template The dynamic page to cache.
 * @param integer $uid The user ID (security precaution to prevent collisions).
 * @param array $vars Set of variables passed to dynamic page.
 */
function cache_page($template, $uid, $vars)
{
    $cache = 'cache/' . $uid . '-' . md5(@json_encode($vars)) . '.cache';

    if (!file_exists($cache)) { // <- also maybe check creation time?
        // set up template variables
        extract($template_vars, EXTR_SKIP);

        // start output buffering and render page
        ob_start();
        include $template;

        // end output buffering and save data to cache file
        file_put_contents($cache, ob_get_clean());
    }

    readfile($cache);
}

File index.php:

require_once 'functions.php';

cache_page(
    'static.php',
    getUser()->id,
    ['username' => getUser()->username]
);
Christian
  • 27,509
  • 17
  • 111
  • 155
0

Use fopen and save the page for offline reading, but its a lot tricker tan it sounds

X10nD
  • 21,638
  • 45
  • 111
  • 152