Nasıl php bir site oluşturmak ve statik bir sürümü oluşturmak olabilir?

10 Cevap php

Ben belli bir proje için, hiçbir sunucu tarafı kodu verilir. Nasıl php web sitesi oluşturabilir (içerir ile, koşul, vb) ve daha sonra ben müşteriye verebilir bir statik html siteye çevirdim?

Güncelleme: wget önerilen herkese teşekkürler. Ben kullanılan buydu. Ben bir PC'de olduğu belirlenmiş olmalıdır, bu yüzden buradan pencereleri sürümü yakaladı: http://gnuwin32.sourceforge.net/packages/wget.htm.

10 Cevap

Eğer kullanmak için kullanılabilir bir Linux sistemi varsa, wget:

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

Seçenekleri

  • -K: göreli bağlantıları dönüştürmek
  • -K: wget tarafından yapılan dönüşüm olmadan dosyaların özgün sürümlerini tutmak
  • -E:. Html html dosyaları yeniden adlandırın (onlar zaten bir htm yoksa (l) uzantısı)
  • -R: özyinelemeli ... Tabii biz bir özyinelemeli kopyasını yapmak istiyorum
  • -L 10: özyineleme maksimum seviye. Eğer gerçekten büyük bir web sitesi varsa daha yüksek bir sayı koymak gerekebilir, ama 10 seviyeleri yeterli olmalıdır.
  • -P: her sayfa için gerekli tüm dosyaları indirmek (css, js, görüntüler)
  • -N: Zaman damgası açın.
  • -F: girdi bir dosyadan okunduğunda, bir HTML dosyası olarak tedavi edilmesi için zorlamayın.
  • -NH: Varsayılan olarak, wget sitenin konak adını bir dizindeki dosyaları koydum. Bu o hostname dizinleri oluşturmayı devre dışı ve geçerli dizinde şeyi koyacağız.

Source: Jean-Pascal Houde's weblog

Sitenizi oluşturmak, daha sonra statik bir kopyasını kapmak için wget veya lwp-mirror gibi bir yansıtma aracı kullanabilirsiniz

Ben ekleyerek geçmişte yapmış:

ob_start();

Sayfaların üst ve ardından altbilgi:

$page_html = ob_get_contents();
ob_end_clean();
file_put_contents($path_where_karşı_save_files . $_SERVER['PHP_SELF'], $page_html);

You might want karşı convert .php extensions karşı .html before baking the HTML inkarşı the files. If you need karşı generate multiple pages with variables one quite easy option is karşı append the filename with md5sum of all GET variables, you just need karşı change them in the HTML karşıo. So you can convert:

somepage.php?var1=hello&var2=hullo

karşı

somepage_e7537aacdbba8ad3ff309b3de1da69e1.html

çirkin ama çalışır.

Sometimes you can use PHP karşı generate javascript karşı emulate some features, but that cannot be aukarşımated very easily.

Ve bunları kaydetmek - Bunu yapmanın bir yolu, normal olarak PHP sitesi oluşturmak ve bir betik aslında (eğer wget kullanabilirsiniz veya yazmaya URL'ler ile sadece dosyayı kullanan başka bir php komut dosyası () olabilir HTTP) web sayfalarını kapmak sahip olmaktır kamu web sitesi yerleri sen "bitti" olduğunda. Tekrar sayfalarını değiştirmeye karar verdiğinizde, o zaman sadece tekrar komut dosyası çalıştırabilirsiniz. Eğer yavaş yavaş değişiyor veritabanı ve trafik çok var zaman canlı sitedeki tüm SQL sorguları ortadan kaldırmak gibi bu yöntem oldukça kullanışlıdır.

Eğer Modx kullanırsanız, statik dosyaları ihracat fonksiyonu inşa etti.

Eğer istek değişkenleri ve etajer, diğer Commenters (wget, lwp-ayna, vb) kolay ve en sağlam çözüm olacağını belirtmiştik spidering araçlardan muhtemelen birinin her türlü ile bir sayfa numarası, varsa.

Almak için gereken sayfa sayısı az, ya da en azından Ancak, eğer manageable, sen sırf onları indirim gerektiğini (herhangi bir üçüncü parti araçları değil gerektirmeyen bir kaç seçenek var onlar) üçüncü parti vardır.

  1. Doğrudan bir dosyaya çıktı almak için komut satırında php kullanabilirsiniz.

    php myFile.php > myFile.html

    Bu yöntemi kullanarak (Bir kabuk içine koymak olabilir gerçi) ağrılı alabilir ve bunu aynı şekilde değişkenleri geçmesine izin vermez (örn: php myFile.php?abc=1 çalışmaz).

  2. İstediğiniz tüm URL'lerin bir listesini içerir ve daha sonra file_get_contents() veya file() üzerinden onları kapmak ve yerel bir dosyaya yazar bir "yapı" dosyası olarak başka bir PHP dosyasını kullanabilirsiniz. Bu yöntemi kullanarak, aynı zamanda dosya (md5_file() için çalışmak gerekir) değişti eğer kontrol alabilirsiniz, böylece müşteri vermek için ne bileceksiniz, onlar sadece güncellemeleri istesin.

  3. Size daha fazla, dosya yerel adresler için tarama ve daha sonra indirmek için dosyaların listenize bu eklemek çıktı yazmadan önce, # 2. Orada yaparken, sonunda işleyen bir web sahip böylece sonunda çıktı isim olacak ne bağlantı için bu adresler değiştirin. Burada dikkatli Not - Bu iyi bir sondaj ise, büyük olasılıkla zaten mevcut araçlardan birini kullanın ve sizin için bu yapabilirdi.

Normal olarak sitesi oluşturmak, daha sonra bir HTML kopyasını oluşturmak için spidering yazılımı kullanın.

HTTrack Ben önce kullanılan yazılımdır.

Ben değiştirmek için garanti edilir belirli sayfalar için kendi web sitesinde bunu - Ben sadece (uyarı: bash yalancı) haşlanmış olabilir bir kabuk komut dosyasını çalıştırın:

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

: Staticize olmak

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

wget belki de en eksiksiz yöntemdir. Buna erişiminiz yoksa ve bir şablon tabanlı bir düzen varsa, Savant 3 kullanarak içine bakmak isteyebilirsiniz. Ederim Smarty gibi diğer şablon sistemleri üzerinde Savant 3 öneririz.

Savant çok hafif ve şablon dili değil, bazı özel sublanguage olarak PHP kullanır. Eğer bakmak istersiniz komut şablonu "derlemek" ve çıkış yapabilirsiniz değişkene yerleştirin, hangi () olan getirme.

http://www.phpsavant.com/

HTTrack (Website) statik bir sayfa kapmak için | (Web Win) Alternatif kullanabilirsiniz wget. HTTrack hatta dosyaları ve statik çıktı maç belgelere bağlantılar düzeltir.