Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generate HTML Static Pages from Dynamic Php Pages

Tags:

html

php

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

like image 830
Satch3000 Avatar asked Apr 17 '11 20:04

Satch3000


1 Answers

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]
);
like image 181
Christian Avatar answered Sep 30 '22 04:09

Christian