¿Cómo puedo crear un sitio en php y tiene que generar una versión estática?

StackOverflow https://stackoverflow.com/questions/66610

  •  09-06-2019
  •  | 
  •  

Pregunta

Para un proyecto en particular no tengo el lado del servidor está permitido el código.¿Cómo puedo crear el sitio web en php (con incluye, condicionales, etc) y, a continuación, tiene que convertir en un html estático sitio que le puedo dar para el cliente?

Actualización:Gracias a todos los que sugirió wget.Que es lo que he usado.Tendría que haber especificado que yo estaba en un PC, así que me agarró de la versión de windows a partir de aquí: http://gnuwin32.sourceforge.net/packages/wget.htm.

¿Fue útil?

Solución

Si usted tiene un sistema Linux disponibles para que usted use wget:

wget -k -K  -E -r -l 10 -p -N -F -nH http://website.com/

Opciones

  • -k :convertir vínculos de relación
  • -K :mantener una de las versiones originales de los archivos sin las conversiones hechas por wget
  • -E :cambiar el nombre de archivos html a .html (si no los tienen ya un htm(l) la extensión)
  • -r :recursiva... por supuesto que desea hacer una copia recursiva
  • -l de 10 :el máximo nivel de recursividad.si usted tiene un gran sitio web que usted puede necesitar para poner un número más alto, pero los niveles de 10, debería ser suficiente.
  • -p :descargar todos los archivos necesarios para cada página (css, js, imágenes)
  • -N :Encienda el sellado de tiempo.
  • -F :Cuando la entrada se lee desde un archivo, a la fuerza, a ser tratado como un archivo HTML.
  • -nH :De forma predeterminada, wget poner los archivos en un directorio llamado después de que el sitio del nombre de host.Esto deshabilita la creación de los nombre de host directorios y poner todo en el directorio actual.

Fuente: Jean-Pascal Houde weblog

Otros consejos

He hecho esto en el pasado mediante la adición de:

ob_start();

En la parte superior de las páginas y, a continuación, en el pie de página:

$page_html = ob_get_contents();
ob_end_clean();
file_put_contents($path_where_to_save_files . $_SERVER['PHP_SELF'], $page_html);

Puede que desee convertir .extensiones de php para .html antes de hornear el código HTML en los archivos.Si usted necesita para generar múltiples páginas con variables muy fácil opción es añadir el nombre de archivo con md5sum de todas las variables GET, sólo tiene que cambiar en el código HTML también.Así que usted puede convertir:

somepage.php?var1=hello&var2=hullo

a

somepage_e7537aacdbba8ad3ff309b3de1da69e1.html

feo, pero funciona.

A veces se puede utilizar PHP para generar javascript para emular algunas de las características, pero que no se pueden automatizar fácilmente.

construir su sitio, a continuación, utilizar un reflejo de la herramienta como wget o lwp-espejo para agarrar una copia estática

Crear el sitio como normal, a continuación, utilizar ningún software para generar un HTML copia.

HTTrack es un software que he usado antes.

Una manera de hacer esto es crear el sitio en PHP como normal, y tiene una secuencia de comandos agarrar las páginas web (a través de HTTP - usted puede utilizar wget o escribir un script de php que sólo utiliza el archivo() con direcciones Url) y guardarlos en el sitio web público de ubicaciones cuando usted está "hecho".A continuación, puede ejecutar de nuevo el script cuando se decide a cambiar las páginas de nuevo.Este método es muy útil cuando se tiene una variación lenta de la base de datos y un montón de tráfico, como se puede eliminar todas las consultas SQL en el sitio en vivo.

Si utiliza modx se ha construido en función de exportar los archivos estáticos.

Si usted tiene un número de páginas, con todo tipo de solicitud de variables y todo eso, probablemente una de las herramientas de rastreo de los otros comentaristas han mencionado (wget, lwp-espejo, etc) sería la más fácil y la solución más robusta.

Sin embargo, si el número de páginas que necesita para obtener es baja, o al menos manejable, tenemos un par de opciones que no requieren de herramientas de terceros (que no debe de descuento Sólo porque son de terceros).

  1. Usted puede utilizar php en la línea de comandos para obtener a la salida directamente en un archivo.

    php myFile.php > myFile.html

    Utilizando este método podría ser dolorosa (aunque podría poner todo esto en un script de shell), y no permite pasar variables de la misma manera (por ejemplo: php myFile.php?abc=1 no funcionará).

  2. Usted podría utilizar otro archivo PHP como "construir" la secuencia de comandos que contiene una lista de todas las Url que desee y, a continuación, se agarra a ellos a través de file_get_contents() o file() y los escribe en un archivo local.Usando este método, usted también puede llegar a comprobar si el archivo ha cambiado (md5_file() debe trabajar para eso), así que usted sabrá qué darle a su cliente, en caso de que sólo desea que las actualizaciones.

  3. Más al #2, antes de escribir la salida a un archivo, análisis local de las direcciones url y, a continuación, los añaden a su lista de archivos para descargar.Mientras estás allí, cambiar las direcciones url de enlace a lo que finalmente va a nombre de su salida, así que usted tiene una web en funcionamiento al final.Nota de precaución aquí - si es que suena bien, que probablemente podría utilizar una de las herramientas que ya existen y hacer esto para usted.

Como alternativa a wget que puede utilizar (Win|Web)HTTrack (Sitio web) para captar la página estática.HTTrack incluso corrige los enlaces a los archivos y documentos para que coincida con la salida estática.

Yo lo hago en mi propio sitio web para ciertas páginas que son la garantía de que no cambie-me basta con ejecutar un script de shell que podría ser hervida a (advertencia:bash pseudocódigo):

find site_folder -name \*.static.php -print -exec Staticize {} \;

con Staticize ser:

# This replaces .static.php with .html
TARGET_NAME="`dirname "$1"`/"`basename "$1" .static.php`".html
php "$1" > "$TARGET_NAME"

wget es probablemente el más completo método.Si usted no tiene acceso a eso, y tienen una plantilla basada en un diseño, puede que desee considerar el uso Sabio de las 3.Recomiendo Savant 3 muy por encima de otras de la plantilla, como los sistemas de Smarty.

Savant es muy ligero de peso y utiliza PHP como lenguaje de plantillas, no privativos sublenguaje.El comando que desea buscar es fetch(), que se "compila" a su plantilla y coloque en una variable que puede generar la salida.

http://www.phpsavant.com/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top