Modulentwurf: Exportieren als statische Seiten inkl. Bildern

Gesperrt
alexd
Beiträge: 33
Registriert: Mi 29. Dez 2004, 14:56
Kontaktdaten:

Modulentwurf: Exportieren als statische Seiten inkl. Bildern

Beitrag von alexd »

Hi,

bin gerade dabei ein Backup-Modul (z.B. für Cronjobs) zu erstellen, welches mir alle zur Zeit online verfügbaren Artikel auflistet und die Inhalte am besten als eine gepackte Datei (+Bilder) abspeichert. Leider komme ich mit meinen PHP-Kenntnissen nicht mehr weiter.
Quelltext bis jetzt:

Code: Alles auswählen

$db = new DB_Contenido;
$sql = "SELECT A.idcatart, B.title, C.name 
          FROM
            ".$cfg["tab"]["cat_art"]." AS A,
            ".$cfg["tab"]["art_lang"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C
          WHERE
            A.idcat     = C.idcat AND
            A.idart     = B.idart AND
            B.online    = '1'";

         $db->query($sql);
		 $zaehler=0;
         while ( $db->next_record() ) {
		     $articleID[] = $db->f("idcatart");
             $articlename[] = $db->f("title");
			 $kategoriename[] = $db->f("name");
			 $zaehler++;
			 echo "Artikelnr.: ".$articleID[$zaehler-1].", Artikelname: ".$articlename[$zaehler-1].", Kategoriename: ".$kategoriename[$zaehler-1]."<br>";
			 };

// Funktionsaufruf
//Funktionsaufruf
das Ergebnis des Aufrufes von:
front_content.php?idcatart=...
soll nun als Html-Datei (oder alles in einer Zip-Datei) gespeichert werden. Ist das überhaupt möglich?

Dankbar für mögliche Vorschläge

Alex
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

da hast du dir ja ne einfache sache ausgesucht... was du vor hast würd ich mal als statischen export definieren...

das ganze als zip ? würde mal sagen eher nein
siehe hier
-> http://at.php.net/manual/de/ref.zip.php
als tar archiv schon eher ließe sich mittel einer pear klasse lösen
-> http://pear.php.net/package/Archive_Tar

um das html der seite zu bekommen siehe hier
-> http://sourceforge.net/project/?group_id=2091
(könnte man dafür nutzen)

als cronjob wirds auch ein problem... das dauert einfach zu lange um so nebenbei mitzulaufen...

das wird ziemlich aufwendig was du machen möchtest... halbwegs gute php kenntnisse vorrausgesetzt...

andere möglichkeiten...
siehe con_code
der code der dort vorhanden ist müsste nur einmal mittels eval ausgeführt werden dann hättest du auch den content der html seite

das ist jetzt aber mal alles theorie, keine ahnung welche der beiden möglichkeiten gut und schnell funktionieren könnte...
*** make your own tools (wishlist :: thx)
Frederic Schneider
Beiträge: 9
Registriert: Fr 26. Nov 2004, 15:07
Wohnort: Eschborn
Kontaktdaten:

Beitrag von Frederic Schneider »

Guten Tag,

es ist kein Problem den Inhalt zu sammeln und dann in eine Zip- oder Rar-Datei zu speichern. Schau dir dazu einfach mal die von emergence gelinkten Themen an. Zlib usw. dürfte ggf. auch interesannt sein.
Mit freundlichen Grüßen
Frederic Schneider
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Frederic Schneider hat geschrieben:es ist kein Problem den Inhalt zu sammeln und dann in eine Zip- oder Rar-Datei zu speichern. Schau dir dazu einfach mal die von emergence gelinkten Themen an. Zlib usw. dürfte ggf. auch interesannt sein.
Das wird ihm jetzt helfen...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Frederic Schneider
Beiträge: 9
Registriert: Fr 26. Nov 2004, 15:07
Wohnort: Eschborn
Kontaktdaten:

Beitrag von Frederic Schneider »

Ist nunmal kein "sooo" einfaches Thema, was man ohne Vorkenntnise mal gerade machen kann. Zu dem ich mich selber erst einlesen müsste, ich persönlich habe erst Skripte gesehen, die das erzeugen, selber gemacht habe ich das noch nie.
Mit freundlichen Grüßen
Frederic Schneider
alexd
Beiträge: 33
Registriert: Mi 29. Dez 2004, 14:56
Kontaktdaten:

Danke ersteinmal

Beitrag von alexd »

Habe das Problem gelöst, die Klasse von Snoopy ist garnicht nötig, der Link kann auch folgend eingelesen werden:

[code]
$html = implode ('', file ("http://localhost/contenido/cms/front_co ... $articleID[$zaehler-1]));
[/code]

Allerdings habe ich immer noch das Problem mit den Bildern. Eigentlich wollte ich sowas wie "Datei -> Seite speichern unter .. " erreichen. Jetzt habe ich aber nur den Inhalt der reine Html-Datei. Das packen ist kein Problem.

Vergleichbare Resultate liefern diverse Offline-Reader, allerdings wollte ich dies gerne über PHP realisieren, wenn dies irgendwie möglich wäre.

Alex
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

@Frederic: Es ging mit mehr um Philisophie: Wenn man weiss, wie es geht, wäre es schön, wenn man den anderen erklärt, wie es geht.

Das es geht, bringt Dich bei einem Problem nur selten weiter (sondern eher nur zur Verzweifelung).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
alexd
Beiträge: 33
Registriert: Mi 29. Dez 2004, 14:56
Kontaktdaten:

Beitrag von alexd »

Habe ein kleines Tool realisiert, welches mir bei Bedarf die Seiten statisch in ein Archiv speichert (+ Bilder)

So kann (per Cronjob) ein simples Abbild der theoretisch abrufbaren Artikel erfolgen.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Möchtest Du es uns zur Verfügung stellen?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
alexd
Beiträge: 33
Registriert: Mi 29. Dez 2004, 14:56
Kontaktdaten:

Beitrag von alexd »

Im Prinzip ganz simple.

Die komplette Datei für die erstellung der statischen HTML - Seiten:

Code: Alles auswählen

<?php
ignore_user_abort(true);
//Einstellungen Pfad zum Programm
$path="/homepages/htdocs/admin/";

include_once ('../contenido/contenido/includes/config.php');
include_once ('../contenido/contenido/includes/functions.con.php');

$db = new DB_Contenido;
$sql = "SELECT A.idcatart, B.title, C.name 
          FROM
            ".$cfg["tab"]["cat_art"]." AS A,
            ".$cfg["tab"]["art_lang"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C
          WHERE
            A.idcat     = C.idcat AND
            A.idart     = B.idart AND
            B.online    = '1' AND
	    B.redirect  = '0' order by C.name";


$db->query($sql);
$zaehler=0;
$path1 = $path . "misc/";
if (!is_dir($path1)) mkdir($path1, 0777);

while ( $db->next_record() ) {
  $articleID[] = $db->f("idcatart");
  $articlename[] = $db->f("title");
  $kategoriename[] = $db->f("name");
  $zaehler++;
  $fn=$path1.$articleID[$zaehler-1].".html";
  $text = implode ('', file ("http://www.ihreseite.de/contenido/cms/front_content.php?idcatart=".$articleID[$zaehler-1]));

// Pfadangaben in relative Pfade ändern, evtl weitere Ersetzungen vornehmen
$text = ereg_replace ('http://www.ihreseite.de/contenido/cms/','',$text);
$fp=fopen($fn,"w");
fwrite($fp,$text);
fclose($fp);
};
$name = date("Y-m-d");
$teil = 1;
$path2 = $path . "static/";
if (!is_dir($path2)) mkdir($path2, 0777);
while (file_exists($path2."static_".$name."_".$teil.".tar.gz")) {$teil = $teil + 1;};
system("tar -zcf static/static_".$name."_".$teil.".tar.gz static/");
system("rm -r misc");

?>
Damit sind dann ersteinmal die aufrufbaren Seiten als html-Seiten verfügbar. Die Bilder lade ich herunter und packe sie auch gleich z.B. so:

Code: Alles auswählen

<?PHP
ignore_user_abort(true);
$name = date("Y-m-d");
$teil = 1;
while (file_exists("archiv/upload_".$name."_".$teil.".tar.gz")) {$teil = $teil + 1;};
system("tar -zcf archiv/upload_".$name."_".$teil.".tar.gz ../contenido/cms/upload/bilder/");
?>
Somit habe ich zwei Dateien, eines mit den Bildern und eines mit den statischen html-Seiten, könnte man ja auch gleich zusammen ablegen. Der Stand der Internetseiten kann so schnell und ziemlich simple rekonstruiert werden, ohne extra eine Testumgebung mit einer DB einzurichten. Da die Autoren auch sehr oft die Bilder ändern, habe ich auch davon nun auch gleich ein Backup.

Den Pseudo Cronjob würde ich allerdings eher nicht nehmen, da das Erstellen der Dateien schon etwas längern dauern könnte.

Für mich reicht dieses Vorgehen. Weitere Anregungen und Verbesserungen sind erwünscht!

Alex[/code]
#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Beitrag von #ayshe »

Hallo,

Alex Ansatz klingt gut in meinen Amateur-Ohren (was PHP betrifft), aber ich habe dazu zwei zentrale Fragen:
1. Wo packe ich die Datei hin, deren Code hier dargestellt wird? Kommt sie einfach auf den Server und ich rufe sie auf? (Ähnlich wie die berühmte phpinfo.php)
2. Funktioniert das auch mit Con 4.6.4?

Viele Grüße,

Ayshe
Gesperrt