Guardar la página actual como HTML en el servidor


¿Qué enfoque podría sugerir alguien para guardar la página actual como un archivo HTML en el servidor? En este caso, también tenga en cuenta que la seguridad es no un problema.

He pasado horas interminables buscando esto, y no he encontrado ni una sola cosa.

Su ayuda es muy apreciada, gracias!

Editar

Gracias a todos por su ayuda, fue muy apreciado.

Author: HoLyVieR, 2010-09-23

6 answers

Si se refería a guardar la salida de una página en un archivo, puede usar el almacenamiento en búfer para hacerlo. Las funciones que necesita usar son ob_start y ob_get_contents.

<?php
// Start the buffering //
ob_start();
?>
Your page content bla bla bla bla ...

<?php
echo '1';

// Get the content that is in the buffer and put it in your file //
file_put_contents('yourpage.html', ob_get_contents());
?>

Esto guardará el contenido de la página en el archivo yourpage.html.

 60
Author: HoLyVieR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-23 03:31:45

Creo que podemos usar Las Funciones de Control de salida de PHP, puede usar guardar el contenido en la variable primero y luego guardarlos en el nuevo archivo, la próxima vez, puede probar que el archivo html existe, luego renderizar eso de otra manera volver a generar la página.

<?php
$cacheFile = 'cache.html';

if ( (file_exists($cacheFile)) && ((fileatime($cacheFile) + 600) > time()) )
{
    $content = file_get_contents($cacheFile);
    echo $content;
} else
{
    ob_start();
    // write content
    echo '<h1>Hello world to cache</h1>';
    $content = ob_get_contents();
    ob_end_clean();
    file_put_contents($cacheFile,$content);
    echo $content;
}
?>

Ejemplo tomado de : http://www.php.net/manual/en/function.ob-start.php#88212

 9
Author: Chetan Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-23 03:34:18

Use JavaScript para enviar document.getElementsByTagName('html')[0].innerHTML como valor de entrada oculto o por ajax al lado del servidor. Esto es más útil que el almacenamiento en búfer de salida si el contenido es luego atravesado/modificado por JavaScript, del cual el lado del servidor podría no tener ninguna noción.

 3
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-23 03:31:05

En caso de que esté buscando guardar la página html completa junto con css, imágenes y scripts en un solo archivo html, puede usar esta clase que he escrito:

Esta clase puede guardar páginas HTML completas con imágenes, CSS y JavaScript.

Toma la URL de una página dada y la recupera para almacenarla en una página dada file.

La clase puede analizar el HTML y determinar qué imágenes, CSS y Archivos JavaScript que necesita, por lo que esos archivos también se descargan y guardado dentro de la página HTML guardada en un archivo local.

Opcionalmente puede omitir el código JavaScript, mantener solo la página contenido, y comprime la página resultante eliminando el espacio en blanco.

Http://www.phpclasses.org/package/8305-PHP-Save-HTML-pages-complete-with-images-CSS-and-JS.html

 3
Author: Sarfraz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-25 09:44:21

Siento que necesita curl, para que pueda guardar la salida de cualquier página. Utilice curl con returntransfer true. y haz lo que quieras con la salida.

 1
Author: Satya Prakash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-23 07:10:56
//function to use curl to get the content of the page.
//parameter used url and $data for the posting credentials to retrieve information.

function httpPost($url, $data){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}

//
$filename="abc.html"; // whatever name you want.
$myfile = fopen($filename, "w") or die("Unable to open file!");
$txt =  httpPost(<url>, ""); //<url> replace by url you want.
fwrite($myfile, $txt);
fclose($myfile);
 0
Author: shaan gola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-13 11:08:01